U442759 躲避UFO
题目背景
超越者为了拿到宝藏来到了 K3980 星球,但此时他正被 UFO 和掌灯人追捕。超越者请你帮他拿到宝藏。
题目描述
在一个 $H \times W$ 的网格上,站着超越者和 UFO。网格上每个格子要么是 `.` (通道)、 `#` (墙壁)、 `U` (UFO,亦是通道)、 `S` (起点,亦是通道)、 `G` (灯塔,即终点,亦是通道)。
设时间 $t$ 从 $0$ 开始,则对于 $t=0,1,2,\dots$ ,超越者和 UFO 可以向**上下左右**移动 $1$ 格,且**均不可**移到墙壁所在的格子或移出网格。超越者和 UFO 都**不能不动**。当超越者到达 `G` 处时,超越者便可进入灯塔并占领 K3980 星球,夺得宝藏。如果超越者与 UFO 处于同一行或同一列,且两者之间没有墙壁时,除非超越者到达终点,否则超越者将会被 UFO 的射线攻击并被逐出 K3980 星球。如果超越者和 UFO 输入时就满足上述条件,则他会**立马**被逐出。
超越者无法预测 UFO 的动向,于是想找到一种**必然**能躲开 UFO 攻击的走法。请帮助超越者这样一种可以进入灯塔的走法,并在此基础上使路程最短(进入灯塔即可,无须回到原点)。
---
#### 注意事项总结:
1. 不能移出网格。
2. 不能不动。
3. 当超越者到达灯塔时,UFO 无法攻击超越者。
5. 路径必须能躲过 UFO 的所有走法。
输入格式
第一行两个整数 $H,W$,表示网格的高和宽,由空格隔开。
接下来输入 $H$ 行,每行一个长度为 $W$ 的字符串,表示 $H \times W$ 的矩阵。矩阵由 `.#USG` 组成,且 `USG` 各出现一次。
输出格式
如果有一种**必然**能躲开 UFO 攻击的走法,请输出**最少**步数。如果无法躲开 UFO,输出 `-1`。
说明/提示
#### 样例解释1
超越者向上、向上、向左、向左即可躲过 UFO。
本题采用捆绑测试。
对于 $80\%$ 的数据(Subtask 0),$2 \le H,W \le 10$。
对于其余 $20\%$ 的数据(Subtask 1),$2 \le H,W \le 100$。