AT_kupc2016_e 柵
Description
[problemUrl]: https://atcoder.jp/contests/kupc2016/tasks/kupc2016_e
縦 $ H $ マス横 $ W $ マスのグリッドのいくつかのマスにヤギがいる。 ふわりは、ヤギのいないいくつかのマスに柵を設置して、どのヤギも、移動をくりかえしてグリッドの外に出ることができないようにしたい。 ヤギは上下左右の隣接する柵のないマスに移動することができる。 ヤギがグリッドの端の行や列にいるときは、グリッドの外に移動することができる。 柵の設置が終わるまでヤギは動かないとする。 目的を達成するのに必要な柵の最小個数を求めよ。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ H $ $ W $ $ S_1 $ : $ S_H $
$ S_i $ $ (1\ \leq\ i\ \leq\ H) $ の $ j $ $ (1\ \leq\ j\ \leq\ W) $ 文字目はグリッドの上から $ i $ 行目、左から $ j $ 列目の状態を表す。 `.` のとき、このマスには何もないことを表す。 `X` のとき、このマスにヤギがいることを表す。
Output Format
設置する必要のある柵の最小個数を一行で出力せよ。いくつ柵を設置してもグリッドの外に出ることができるヤギが存在するときは $ -1 $ を出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ H\ \leq\ 100 $
- $ 1\ \leq\ W\ \leq\ 100 $
- グリッドの少なくとも 1 マスにはヤギが存在する。
### Sample Explanation 1
$ 3 $ 行目の $ 2 $ 列目と $ 2 $ 行目の $ 3 $ 列目と $ 3 $ 行目の $ 4 $ 列目と $ 4 $ 行目の $ 3 $ 列目に設置すればよい。
### Sample Explanation 2
この例ではどのようにしてもヤギはグリッドの外へ出ることができる。