2425 - 逃离游戏
描述

有一个 HW 列的网格场地。第 ij 列是字符 A_{i, j}。每个字符的含义如下:

- `.`:一个空方块,可以通过。

- `#`:一个障碍物,无法通过。

- `>`、`v`、`<`、`^`:朝东、朝南、朝西、朝北的人所在的方块,无法通过。人的视线宽度为一个方块,并且沿着人的朝向直线延伸,直到被障碍物或其他人阻挡。

- `S`:起点方块,可以通过。只有一个起点方块,保证不会出现在任何人的视线中。

- `G`:目标方块,可以通过。只有一个目标方块,保证不会出现在任何人的视线中。

小Z 位于起点方块,可以任意次数地向东、向西、向南、向北移动一格。然而,他不能进入障碍方块或离开场地。  

请判断他是否可以到达目标方块而不进入任何人的视线。如果可以,找出所需的最小移动次数,否则,输出 `-1`。

输入

第一行 两个数字表示HW 列;

接下来一个二维字符数组表示网格图

输出

逃离的最少步数,如不能,则输出"-1"

样例

输入

5 7
....Sv.
.>.....
.......
>..<.#<
^G....>

输出

15

输入

4 3
S..
.<.
.>.
..G

输出

-1
提示

- 60%的数据: 2\ \leq\ H,\ W\ \leq\ 50

- 100%的数据: 2\ \leq\ H,\ W\ \leq\ 2000

- A_{i,j} ∈ `.`, `#`, `>`, `v`, `<`, `^`, `S`, `G` 只有这几种字符

- `S`, `G`保证只出现一次


题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 18
通过次数 6