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$。