10475: Гонки


Відправити розв'язок

Бали: 100 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
Brain****, C, C++, Java, Pascal, Python, v8js

На день народження юному техніку Мишкові подарували машинку з радіокеруванням. Мишкові швидко набридло ганяти машинку туди-сюди по кімнаті, і він спорудив спеціальну трасу. Для цього він розбив кімнату на квадратні осередки, деякі з них залишивши порожніми, а в деякі поставив перешкоди. Цілий тиждень Мишко щодня покращував свій рекорд з проходження траси. Але яке ж було розчарування Михайла, коли до нього в гості прийшов Тіма зі своєю машинкою та побив його рекорд. Стало зрозуміло, що машину потрібно модернізувати.

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

Тепер Мишкові цікаво, яку мінімальну кількість разів необхідно натиснути на кнопку пульта, щоб машинка, почавши в клітці старту, зупинилася в клітці фінішу.

Формат вхідних даних

Перший рядок вхідного потоку містить два цілих числа \(n\) і \(m\) — розміри траси \((2 \le m, n \le 20)\).

Наступні \(n\) рядків містять \(m\) символів кожна: символ «.» відповідає порожній клітині, "#" - перешкоді, а "S" і "T" - клітині старту і клітині фінішу відповідно.

Формат вихідних даних

На вихід виведіть мінімальну кількість натискань на кнопки пульта, потрібну для проведення машинки від старту до фінішу. Якщо доїхати від старту до фінішу за такими правилами неможливо, виведіть -1.

Приклад вхідних даних

5 5
S#..T
.#.##
.....
.##.#
.#...

Приклад вихідних даних

6

Коментарі

Ще немає коментарів.