Кімната для гри в кості#3307

Кімната для гри в кості

30 секунд
256 мегабайтів
Складна

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

Одна з головоломок, з якою ви зіткнулися, виглядає так: у кімнаті є пристрій у формі куба, що лежить на столі в центрі. На стіні написані інструкції:

"Цей куб є пультом дистанційного керування, за допомогою якого ви можете маніпулювати віддаленою кімнатою, Кімнатою Куба. Кімната має кубічну форму, її поверхні складаються з 3 \times 3 одиничних квадратів, деякі з яких мають отвори, достатньо великі, щоб ви могли пройти. Ви можете обертати куб так, що під час обертання принаймні один край завжди торкається столу, тобто в напрямках. Обертання куба впливає на віддалену кімнату так само, змінюючи положення отворів. Щоб пройти через кімнату, отвори повинні бути принаймні на одному з нижніх трьох квадратів на передній і задній стороні кімнати."

На моніторі ви бачите поточні положення отворів. Перед тим, як увійти в Кімнату Куба, потрібно обернути куб так, щоб ви могли пройти через кімнату. Оскільки обертання займає час, якого у вас небагато, потрібно мінімізувати кількість обертань. Скільки обертань вам потрібно, щоб пройти через Кімнату Куба?

Вхідні дані

Вхідні дані складаються з кількох наборів. Кожен набір містить таблиць розміром 3 \times 3 символів, що описують початкове положення отворів на кожній стороні. Кожен символ — це або '*', або '.'. Отвір позначається символом '*'. Порядок сторін: передня, права, задня, ліва, верхня, нижня. Порядок і орієнтація описані на цій розгортці:

Рисунок 1: Кімната Куба

Рисунок 2: доступні обертання куба

Після кожного набору даних є порожній рядок. Кінець введення позначається символом '#'.

Вихідні дані

Виведіть мінімальну кількість обертань, необхідних для кожного набору даних, у рядку. Ви можете припустити, що всі набори даних мають рішення.

Приклади

Приклад 1

Loading
Loading