Паякан в беде
시간 제한1초메모리 제한1024 MB
길이 k, 너비 1인 생물이 암초와 물로 된 n×m 격자에서 머리가 (n, m)에 도달하는 최소 시간을 구하고, 불가능하면 -1을 출력한다.
문제
Полковник Куорич и его приспешники преследуют тулкуна Паякана на добывающем корабле. Неподалеку располагается база На'ви и тулкун уже почти почувствовал себя спасенным. Однако, чтобы добраться до базы, ему необходимо преодолеть рифовые заграждения. Поле из рифовых заграждений представляет собой прямоугольник из клеток размера , каждая из клеток может быть либо рифом, либо водой.
Тулкун имеет длину и ширину , и хочет проплыть эти рифы как можно быстрее. Тулкуны весьма неповоротливы, поэтому могут двигаться только вперед и назад относительно своего текущего направления (от хвоста к голове), а также поворачивать на по следующим правилам: если голова тулкуна длины находилась в точке , то после поворота его хвост окажется в точке , а голова в точке или , если он был ориентирован горизонтально, и в точке или , если он был ориентирован вертикально. Ниже показаны оба поворота из горизонтального положения для и (во втором случае меняется только направление):

Каждый сдвиг на одну клетку и каждый поворот занимают у Паякана одну единицу времени.
Изначально Паякан может заплыть на поле в любой ориентации, то есть занять либо клетки , либо , при этом его голова будет находиться либо в точке , либо в точке . Считается, что вы спасете его, если он окажется головой в правой нижней клетке рифового поля, то есть в точке . Помогите Паякану спастись и определите, за какое время он сможет оказаться в правом нижнем углу, или скажите, что это невозможно.
입력
В первой строке через пробел даны три целых числа , и --- размеры поля и длина тулкуна (; ; ).
В следующих строках дано описание поля, каждая строка имеет длину и состоит из символов '\#' соответствует рифу, символ '.' --- воде.
출력
Выведите одно число --- количество действий, которое надо совершить тулкуну, чтобы попасть в правый нижний угол поля, или , если это невозможно.
힌트
В первом примере тулкун может начать в направлении <<вправо>>, проплыть две клетки вперед, повернуться по часовой стрелке и сделать еще два движения вперед. В сумме перемещение занимает действий.
Путь тулкуна во втором примере показан на рисунке ниже. Маленькие стрелки соответствуют перемещениям головы вперед или назад, а большие --- поворотам.
