AT_pakencamp_2020_day1_i くねくね

Description

[problemUrl]: https://atcoder.jp/contests/pakencamp-2020-day1/tasks/pakencamp_2020_day1_i 配点 : $ 400 $ 点 縦 $ H $ マス、横 $ W $ マスの $ H×W $ マスからなる迷路があります。 上から $ i $ 行目、左から $ j $ 列目のマス $ (i,\ j) $ は、$ S_{i,j} $ が `#` のとき壁であり、`.` のとき道です。 マス $ (sx,\ sy) $ にうなぎがいて、マス $ (gx,\ gy) $ まで移動しようとしています。 うなぎは $ 1 $ 回の移動で、今いるマスと隣接する道マスに移動することができます。この際、迷路の外への移動はできません。 うなぎはくねくね動くのが好きです。そこで、迷路をプレイする際に以下の制限を設けることにしました。 - $ i $ 回目の移動で上下に移動した場合、$ i+1 $ 回目の移動では左右に移動しなければならない。 - $ i $ 回目の移動で左右に移動した場合、$ i+1 $ 回目の移動では上下に移動しなければならない。 - 最初の移動では、どの方向にも動くことができる。 うなぎはこの制限を守った上で、マス $ (gx,\ gy) $ まで移動できるでしょうか? 移動できるか判定した上で、移動できる場合は必要な移動回数の最小値を求めてください。

Input Format

入力は以下の形式で標準入力から与えられます。 ``` \(H\) \(W\) \(sx\) \(sy\) \(gx\) \(gy\) \(S_{1,1}\) \(S_{1,2}\) \(\ldots\) \(S_{1,W}\) \(S_{2,1}\) \(S_{2,2}\) \(\ldots\) \(S_{2,W}\) \(⋮\) \(S_{H,1}\) \(S_{H,2}\) \(\ldots\) \(S_{H,W}\) ```

Output Format

うなぎがマス $ (gx,\ gy) $ まで移動できる場合は移動回数の最小値を、移動できない場合は $ -1 $ を出力してください。 出力の最後に改行を忘れないでください。