とある世界では、「魔物使い同士の目が合ったら、その場でお互いの連れているモンスターを戦わせなければならない。」という掟があるんだとか。
魔物使いであるmoguさんは、冒険の途中で連れているモンスターが傷を負ってしまったので、近くの町の宿へ行って休ませたいと考えている。しかし、町への道中には冒険中の魔物使いがいるため、できるだけ彼らと目を合わせないようにしたい。
行 列のグリッドがあり、 行 列 のマスを マス と定める。また、 が小さくなる方向を 北 、 が大きくなる方向を 南 、 が小さくなる方向を 西 、 が大きくなる方向を 東 と定める。
moguさんは今、マス におり、町は マス にある。
冒険中の魔物使いは このグリッド内に 人おり、魔物使い は ^ のとき北を、 v のとき南を、 < のとき西を、 > のとき東を向いている。
はじめ、moguさんはどの魔物使いとも戦闘していない。moguさんが魔物使いの向く方向にいたとき、moguさんとその魔物使いで戦闘が発生する。該当する魔法使いが複数いる場合、その全員とそれぞれ戦闘が発生するものとする。ただし、moguさんと戦闘したことのある魔物使いとの再戦が発生することはない。
moguさんと魔物使いが同じグリッド内にいることはできないものとする。moguさんが上下左右のマスへの移動を繰り返すことで町へ向かう際の、戦闘回数の最小値を求めよ。
. , ^ , v , < , > 入力はすべて整数である。
H W N
S_{1,1} S_{1,2} .. S_{1,W}
S_{2,1} S_{2,2} .. S_{2,W}
...
S_{H,1} S_{H,2} .. S_{H,W}moguさんが上下左右のマスへの移動を繰り返すことで町へ向かう際の、戦闘回数の最小値を1行に出力せよ。
4 4 2 .... ...< .v.. ....
1
例えば、次のように移動することで戦闘回数を 回にできます。戦闘回数を 回にすることはできないので、 を出力します。
***. ..*< .v*. ..**
5 5 2 ..... ...<. ..... .>... .....
0
次のように移動することで戦闘回数を 回にできます。
***** ...<* ***** *>... *****
5 5 4 ..... ....< ....< ..... ..^^.
4
どのように移動しても戦闘回数は 回です。
5 5 2 ..... ...v. ...^. ..... .....
1
他の魔物使いの後ろに回ることによって魔物使いの視線をかいくぐることはできません。透視能力でもあるのでしょうか。