Задача E. Огромная парковка

Автор:Жюри ВКОШП 2010   Ограничение времени:2 сек
Входной файл:parking.in   Ограничение памяти:256 Мб
Выходной файл:parking.out  

Условие

Джон работает на огромной парковке. Парковка представляется собой прямоугольное поле n × m, разбитое на n × m квадратных позиций размера 1 × 1. Одну из угловых позиций занимает выезд с парковки.

Машин на парковке много и вывести машину не так уж просто. Единственное, что Джон может сделать — это переместить один из автомобилей на соседнюю позицию, если она свободна. Соседними считаются позиции, имеющие общую сторону. Однако задача усложняется наличием на парковке столбов. На позиции, где стоят столбы, нельзя поставить машину. Парковка вся занята машинами и столбами и единственное свободное место — выезд с парковки. Задача Джона — вывести с парковки один из автомобилей. Помогите ему узнать, какое минимальное число действий ему придется совершить.

Формат входного файла

В первой строке входного файла два целых числа n и m (1 ≤ n, m ≤ 50) — размеры парковки. Далее следуют n строк по m символов в каждой. Символ "." означает пустую позицию, единственная пустая позиция — выезд с парковки. Символ "#" означает столб. Столбы нельзя перемещать и на место столба нельзя ставить автомобили. Символ "c" означает автомобиль. Символ "X" — автомобиль, который необходимо вывести с парковки. Автомобиль считается выведенным, как только он достигает выезда с парковки. Гарантируется, что хотя бы одно из чисел n, m больше единицы и каждый из символов "." и "X" встречается во входном файле ровно один раз. Символ "." всегда располагается в верхнем левом углу парковки.

Формат выходного файла

Если машину вывести невозможно, выведите в выходной файл единственное слово "Impossible". Иначе в единственной строке выведите единственное число — минимальное количество действий для вывода автомобиля.

Примеры тестов

Входной файл (parking.in) Выходной файл (parking.out)
1
3 3
.#X
ccc
c#c
Impossible
2
2 3
.cX
ccc
7

0.088s 0.013s 13