E - Third Avenue Editorial /

Time Limit: 3 sec / Memory Limit: 1024 MB

配点 : 500

問題文

H マス、横 W マスの 2 次元グリッドで表された街があります。
上から i 行目、左から j 列目のマスの情報が文字 a_{i,j} により与えられます。 a_{i,j}S , G , . , # , a ~ z のいずれかです。
# は入ることができないマスを、a ~ z はテレポーターのあるマスを表します。

高橋くんははじめ S のマスにおり、 1 秒ごとに以下のいずれかの移動を行います。

  • 現在いるマスと上下左右に隣り合う、# でないマスに移動する。
  • 今いるマスと同じ文字が書かれているマスを 1 つ選び、そこにテレポートする。この移動は現在いるマスが a ~ z のいずれかであるとき使える。

高橋くんが S のマスから G のマスに移動するのに必要な最短の時間を求めてください。
ただし、どうしても G のマスにたどり着けない場合は、代わりに -1 を出力してください。

制約

  • 1 \le H, W \le 2000
  • a_{i,j}S , G , . , # , 英小文字のいずれか
  • S のマスと G のマスはちょうど 1 つ存在する

入力

入力は以下の形式で標準入力から与えられる。

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

出力

S のマスから G のマスに移動するのに必要な最短時間を出力せよ。
S のマスから G のマスに移動する方法が存在しない場合は、代わりに -1 を出力せよ。


入力例 1

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

出力例 1

4

上から i 行目、左から j 列目のマスを (i, j) で表すこととします。
はじめ、高橋くんは (1, 1) にいます。 例えば、以下のような手順で 4 秒で (2, 5) に移動することができます。

  • (1, 1) から (2, 1) に移動する
  • (2, 1) と同じ a のマスである (2, 3) にテレポートする
  • (2, 3) から (2, 4) に移動する
  • (2, 4) から (2, 5) に移動する

入力例 2

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

出力例 2

14

入力例 3

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

出力例 3

-1

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