Ограничение по времени: 2.000 секунд
Ограничение по памяти: 500.000 мегабайт
В Новосибирске открылся новый офис. Чтобы попасть в него утром, Сергею нужно отключить сигнализацию.
Холл, в котором находится вход в офис, имеет размеры n x m метров, и поделен на квадраты размера 1 x 1 метр. Представим пещеру в виде таблицы n x m, строки которой пронумерованы от 1 до n сверху вниз, а столбцы - от 1 до m слева направо. В некоторых квадратах находятся колонны с переключателями, а остальные квадраты свободны. Сергей может перемещаться только по свободным квадратам. За единицу времени он может переместиться из квадрата в соседний по стороне.
Сейчас Сергей находится в некотором квадрате холла. Чтобы открыть вход в офис, нужно в правильном порядке выключить переключатели. После чего, Сергей должен дойти до квадрата, в котором откроется вход в офис. Чтобы выключить переключатель, расположенный в некотором квадрате, Сергей должен встать в квадрате, соседнем по стороне. На то, чтобы выключить переключатель, Сергей не тратит дополнительного времени.
Сергей очень рвется в новый офис, и он хочет узнать, за какое минимальное время можно выключить сигнализацию и войти. Помогите ему узнать эту величину.
В первой строке даны три целых числа n, m и k - размеры холла и длина последовательности переключателей, которые должен выключить Сергей (1 ≤ n, m ≤ 100; 0 ≤ k ≤ 100).
В следующих n строках дано по m символов - описание холла. Символ #
соответствует непроходимой клетке, колонне с переключателем. Все остальные клетки свободны. Символ S
соответствует квадрату, в котором Сергей находится изначально. А символ F
соответствует квадрату, в котором откроется вход в офис. Сергей должен будет прийти в него после того, как выключит сигнализацию. Все остальные символы равны .
. Гарантируется, что символы S
и F
встречаются ровно по одному разу.
В следующих k строках даны по два целых числа xi и yi - номер строки и столбца, на пересечении которых находится i-ая колонна с переключателем, который должен отключить Сергей. Гарантируется, что квадрат на пересечении строки номер xi и столбца номер yi содержит переключатель для всех i от 1 до k.
Если Сергей не сможет выключить сигнализацию и войти в офис, выведите число −1
. Иначе, выведите минимальное время, необходимое, чтобы выключить сигнализацию и дойти до входа в офис.
input | output |
---|---|
3 5 3 #.... ####. FS... 1 1 2 3 2 2 |
17 |
3 5 1 #.... ##### FS... 1 1 |
-1 |
3 5 0 F#... .#.#. ...#S |
10 |
В первом примере, Сергей сначала должен дойти до квадрата (1, 2) за 8 шагов. Выключить переключатель (1, 1). Перейти в соседний справа квадрат. Выключить переключатель (2, 3). Затем, дойти до квадрата (3, 2) за 7 шагов. Выключить переключатель (2, 2). Перейти в соседний слева квадрат. После чего, его маршрут закончится. Суммарно он потратит 8 + 1 + 7 + 1 = 17 единиц времени.