Ваше завдання в цьому завданні - проаналізувати таке "рівняння сірника", як це ...

... і з’ясувати, чи можна його перетворити на дійсне рівняння, переставивши відповідність. Якщо це так, вам слід вивести найменшу кількість рухів для цього та отримане рівняння.
Вхідні дані
Вхід - це рядок, яку можна прочитати з STDIN, взяти її як аргумент функції або навіть зберегти у файлі. Це рівняння, яке являє собою розташування сірника, і може бути описане за допомогою наступного EBNF:
input = term, "=", term ;
term = number | (term, ("+" | "-"), term) ;
number = "0" | (numeralExceptZero , {numeral}) ;
numeralExceptZero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
numeral = "0" | numeralExceptZero ;
Прикладом для коректного вводу може бути 3+6-201=0+0+8.
Завдання
Розглянемо наступну ілюстрацію, де кожному матчу присвоєно номер:

Тепер ми відображаємо кожен символ введення у відповідні позиції відповідного рядка таким чином:
0 ↦ 1,2,3,4,5,6
1 ↦ 4,5
2 ↦ 2,3,5,6,8
3 ↦ 3,4,5,6,8
4 ↦ 1,4,5,8
5 ↦ 1,3,4,6,8
6 ↦ 1,2,3,4,6,8
7 ↦ 4,5,6
8 ↦ 1,2,3,4,5,6,8
9 ↦ 1,3,4,5,6,8
- ↦ 8
+ ↦ 8,10
= ↦ 7,9
Кожна формула введення може бути перетворена на схему відповідності. Наприклад, стає рівнянням "45 + 6 = 92"

де невикористані сірники змазані сірим кольором Ваше завдання - знайти найменшу кількість сірників, які необхідно переставити, щоб зробити рівняння дійсним.
Вихідні дані
Ми розрізняємо три можливі випадки:
- Якщо введення даних недійсне (тобто воно не відповідає вищевказаному EBNF), виведіть все, що завгодно.
- В іншому випадку, якщо є способи перетворити рівняння у дійсне, переставивши сірники, ви повинні вивести як мінімальну кількість перестановок, так і відповідне рівняння. Як і вхідне, виведене рівняння також повинно задовольняти заданому EBNF. У наведеному вище прикладі правильним результатом буде
1і46+6=52. Якщо для отриманого рівняння є кілька можливостей, виведіть будь-яке з них. - В іншому випадку (тому, якщо введення дійсне, але немає можливості зробити рівняння істинним), ви повинні вивести
-1.
Деталі
- Вам заборонено видаляти або додавати відповідники. Це означає, що якщо вхід будується з
nсірників, вихід також повинен складатися з точно відповіднихnтаблиць. - "Порожні" блоки блоку дозволених дозволених лише в кінці та на початку рівняння, а не посередині. Так, наприклад, перетворення
7-1=6в7 =6-1просто вилучення-1з лівого боку та додавання його з правого боку за допомогою лише 3 перестановок сірника не дозволяється. Оскільки я не вважаю відображення від чисел до позицій матчу цікавою частиною цього виклику, плюс 20 байтів ви можете
- отримати доступ до файлу, в якому відображення
(number/operation ↦ matchstick positions)зберігається будь-яким розумним способом, або - якщо ваша мова програмування підтримує
Mapтип даних, припустімо, що у вас є доступ до карти, яка попередньо ініціалізується за допомогою(number/operation ↦ matchstick positions)-mapping. Наприклад, ця карта може виглядати так:{(0,{1,2,3,4,5,6}),(1,{4,5}),(2,{2,3,5,6,8}),(3,{3,4,5,6,8}), ..., (-,{8}),(+,{8,10}),(=,{7,9})}
- отримати доступ до файлу, в якому відображення
Приклади
Вхід: 1+1=3 ↦ Вихід: 1 і1+1=2
Вхід: 15+6=21 ↦ Вихід: 0 і15+6=21
Вхід: 1=7 ↦ Вихід: -1
Вхід: 950-250=750 ↦ Вихід: 2 і990-240=750
Вхід: 1-2=9 ↦ Вихід: 1 і1+2=3
Вхід: 20 + 3=04 ↦ Вихід: що завгодно
Переможець
Це код-гольф , тому найкоротша правильна відповідь (у байтах) виграє. Переможець буде обраний через тиждень після опублікування першої правильної відповіді.
=(2 сірника) і -(1 сірник) і залишити всі числа там, де вони є. Якщо, однак, 2 довелося перемістити ліворуч, вам також доведеться порахувати необхідні рухи.
1+1+2=3-6+10? І те саме питання про вихід.
0: 1, 2, 3, 4, 5, 6для послідовності