Для игры «Перевертыш» используется прямоугольное поле 4 × 4 с двусторонними фишками, размещенными на каждом из 16 квадратов поля. Одна сторона каждой фишки – белая, другая – черная, и каждая фишка лежит либо черной, либо белой стороной вверх. Каждый раунд вы переворачиваете несколько фишек, меняя цвет их верхней стороны с черного на белый, и наоборот. Фишки, которые будут переворачиваться, выбираются каждый раунд в соответствии со следующими правилами:
- Выберите любую из 16 фишек.
- Переверните выбранную фишку, а также все смежные фишки слева, справа, сверху и снизу от выбранной фишки (если они есть).
Рассмотрим в качестве примера следующее поле:
Здесь «b» обозначает фишки, лежащие черной стороной вверх, а «w» – фишки, лежащие белой стороной вверх. Если перевернуть первую фишку из третьего ряда (этот выбор показан на рисунке), то поле будет выглядеть так:
Цель игры состоит в том, чтобы перевернуть все фишки либо белой, либо черной стороной вверх. Напишите программу, которая найдет минимальное количество раундов, необходимых для достижения этой цели.
Исходные данные
Входные данные состоят из 4 строк с 4 символами «w» или «b», которые обозначают позицию игры.
Результат
Выведите минимальное количество раундов, необходимое для достижения цели игры из заданной позиции. Если цель изначально достигнута, выведите 0. Если цель недостижима, выведите «Impossible».
Примеры
исходные данные | результат |
---|
bwbw
wwww
bbwb
bwwb
| Impossible
|
bwwb
bbwb
bwwb
bwww
| 4
|
Источник задачи: 2000-2001 ACM Northeastern European Regional Programming Contest