`Всеукраїнський центр проведення олімпіад в мережі Інтернет

Задача Soldier. В некотором (догадайтесь сами, в каком)  воинственном государстве солдаты-призывники делают два дела: красят травку и ходят строем. И если с покраской все легко, то строевая подготовка требует много времени и сил, особенно при условии, когда вот-вот очередной военный парад... Плац, по которому будут шагать солдаты нашего героического взвода, представляет собой прямоугольник N×M(2≤N,M≤700) (если принять размер "коробки" взвода солдат за квадрат с единичной стороной),  некоторые клеточки которого заняты другими подразделениями, поэтому взводу ходить через эти клеточки запрещается. Известны также начальный и конечный пункты движения взвода. Сержант Pupkin хорошо знает - солдаты отлично ходят по прямой, а вот команды "налево", "направо" и "кругом" выполняют иногда с ошибками, поэтому он хочет, чтобы на праздничном прохождении взвод сделал как можно меньше поворотов. Помогите сержанту найти маршрут с наименьшим количеством поворотов.

Технические условия. Программа Soldier   читает из устройства стандартного ввода  в первой строке  N - количество строк в схеме плаца. Во второй  строке M - количество столбиков. Дальше  N строк по M символов в каждой. Символ "." означает свободную клеточку, символ "X" занятую. Также существует ровно один символ "S" и один символ "F", что помечают соответственно исходную и конечную точки прохода взвода. Хотя бы один маршрут между S и F всегда существует.

Программа выводит  на устройство стандартного вывода единственное число - минимальное количество поворотов взвода на маршруте. Перед началом марша сержант может построить взвод лицами в любую сторону - как ему это удобно.

 Пример

Ввод

3
4
S...
.XXF
....

Вывод

1

 

© LIKT 1998-2024