Збережіть програмістів Python!#3373

Збережіть програмістів Python!

1 секунда
64 мегабайти
Дуже складна

У постапокаліптичній Каліфорнії залишилося лише шість команд програмістів на Python: три команди використовують CPython, а три — Jython. На жаль, вулицями блукають зомбі-програмісти на C++, тому програмісти можуть залишати свої безпечні будинки лише під керівництвом свого доброзичливого диктатора Гвідо.

Шість команд контролюють мережу безпечних будинків, і через обговорення в їхній соціальній мережі Facelessbook вони домовилися обмінятися безпечними будинками — тобто програмісти CPython переїдуть у будинки, зайняті програмістами Jython, і навпаки. Щоночі Гвідо буде вести одну команду з одного безпечного будинку в інший, сусідній, і робитиме це щоночі, поки шість команд не обміняються безпечними будинками.

Кожен безпечний будинок достатньо великий лише для однієї команди, тому жодні дві команди не можуть бути в одному будинку одночасно. Між програмістами CPython і Jython існує величезна недовіра, тому вони наполягають, щоб Гвідо чергував між веденням команди CPython і команди Jython (хоча в першу ніч він може вибрати будь-яку).

Мережа безпечних будинків добре відома, як кількість будинків, так і пари будинків, між якими можна подорожувати за одну ніч. Ваше завдання — визначити мінімальну кількість ночей, необхідну для обміну шістьма командами, якщо це взагалі можливо.

Буде не більше безпечних будинків, кожен з яких ідентифікується однією маленькою літерою. Команди CPython починають у будинках a, b і c; команди Jython починають у будинках d, e і f. Наприкінці обміну команди CPython повинні опинитися в будинках d, e і f, а команди Jython повинні опинитися в будинках a, b і c.

Вхідні дані

Вхідні дані будуть в одному рядку, який дає з'єднання між будинками. Кожен рядок складатиметься з розділених пробілами "слів". Кожне слово вказує на з'єднання між будинком, представленим першою літерою слова, і будинками, представленими кожною наступною літерою слова.

Вихідні дані

Для кожного сценарію, якщо є рішення, надрукуйте мінімальну кількість ночей, необхідну для переміщення; якщо немає способу здійснити переміщення, надрукуйте один рядок, що містить No solution.

Приклади

Перша прикладна головоломка, Рисунок 1, описана як gabd hbcf edf, може бути вирішена за ходи. (Вона представлена тут у розмірі, де ви можете спробувати її вручну, розмістивши пенні на верхньому ряду і нікелі на нижньому ряду, і обмінюючи два ряди відповідно до наведених вище обмежень.)

Рисунок 1: Помірно складна головоломка

Наступна головоломка, показана на Рисунку 2, описана як bacgh dge feh, вимагає ходів.

Рисунок 2: Складніша головоломка

Ситуація, зображена на Рисунку 3, gab hbdf ibc edf, вимагає ходів.

Рисунок 3: Удачі з цим!

Приклад 1

Loading
Loading

Примітка

Примітка: Цю головоломку створив Боб Херн у Дартмуті.