101844: [AtCoder]ABC184 E - Third Avenue

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Score : $500$ points

Problem Statement

There is a town represented as a two-dimensional grid with $H$ horizontal rows and $W$ vertical columns.
A character $a_{i,j}$ describes the square at the $i$-th row from the top and $j$-th column from the left. Here, $a_{i,j}$ is one of the following: S , G , . , # , a, ..., and z.
# represents a square that cannot be entered, and a, ..., z represent squares with teleporters.

Takahashi is initially at the square represented as S. In each second, he will make one of the following moves:

  • Go to a non-# square that is horizontally or vertically adjacent to his current position.
  • Choose a square with the same character as that of his current position, and teleport to that square. He can only use this move when he is at a square represented as a, ..., or z.

Find the shortest time Takahashi needs to reach the square represented as G from the one represented as S.
If the destination is unreachable, report -1 instead.

Constraints

  • $1 \le H, W \le 2000$
  • $a_{i,j}$ is S, G, ., #, or a lowercase English letter.
  • There is exactly one square represented as S and one square represented as G.

Input

Input is given from Standard Input in the following format:

$H$ $W$
$a_{1,1}\dots a_{1,W}$
$\vdots$
$a_{H,1}\dots a_{H,W}$

Output

Print the shortest time Takahashi needs to reach the square represented as G from the one represented as S.
If the destination is unreachable from the initial position, print -1 instead.


Sample Input 1

2 5
S.b.b
a.a.G

Sample Output 1

4

Let $(i, j)$ denote the square at the $i$-th row from the top and $j$-th column from the left.
Initially, Takahashi is at $(1, 1)$. One way to reach $(2, 5)$ in four seconds is:

  • go from $(1, 1)$ to $(2, 1)$;
  • teleport from $(2, 1)$ to $(2, 3)$, which is also an a square;
  • go from $(2, 3)$ to $(2, 4)$;
  • go from $(2, 4)$ to $(2, 5)$.

Sample Input 2

11 11
S##...#c...
...#d.#.#..
..........#
.#....#...#
#.....bc...
#.##......#
.......c..#
..#........
a..........
d..#...a...
.#........G

Sample Output 2

14

Sample Input 3

11 11
.#.#.e#a...
.b..##..#..
#....#.#..#
.#dd..#..#.
....#...#e.
c#.#a....#.
.....#..#.e
.#....#b.#.
.#...#..#..
......#c#G.
#..S...#...

Sample Output 3

-1

Input

题意翻译

给出一张地图,起点 `S` 终点 `G`,`#` 表示墙体。 地图上有若干个传送门,用小写字母表示。 每一秒,您可以移动到相邻位置,或是通过您当前所处的传送门移动到对应的任一传送门。 问您需要的最短时间,若是无法到达输出 `-1`。

加入题单

算法标签: