atcoder#ACL1C. Moving Pieces

Moving Pieces

配点 : 600600

問題文

NNMM 列からなる盤面があります. この盤面の情報は NN 個の文字列 S1,S2,,SNS_1,S_2,\ldots,S_N によって表されます. 具体的には,上から ii 行目,左から jj 列目のマスの状態は,以下のように表されます.

  • Si,j=S_{i,j}=. : このマスは空である.
  • Si,j=S_{i,j}=# : このマスには障害物が置かれている.
  • Si,j=S_{i,j}=o : このマスには 11 つの駒が置かれている.

yosupo くんが,これから以下の操作を繰り返します.

  • 駒を 11 つ選び,11 個下,もしくは 11 個右のマスに移動させる. ただし,他の駒もしくは障害物のあるマスに駒を移動させる操作は禁止されている. もちろん,駒が盤面を飛び出すような操作も行えない.

yosupo くんは,できるだけ多くの回数操作をしたいです. 操作回数の最大値を求めてください.

制約

  • 1N501 \leq N \leq 50
  • 1M501 \leq M \leq 50
  • SiS_i は,.,#,o からなる長さ MM の文字列.
  • 1(1 \leq ( 駒の個数 )100)\leq 100. つまり,Si,j=S_{i,j}=o を満たす (i,j)(i,j) の個数は 11 個以上 100100 個以下.

入力

入力は以下の形式で標準入力から与えられる.

NN MM

S1S_1

S2S_2

\vdots

SNS_N

出力

操作回数の最大値を一行に出力せよ.

3 3
o..
...
o.#
4

以下のように 44 回の操作を行えます.

o..      .o.      ..o      ...      ...
...  ->  ...  ->  ...  ->  ..o  ->  ..o
o.#      o.#      o.#      o.#      .o#
9 10
.#....o#..
.#..#..##o
.....#o.##
.###.#o..o
#.#...##.#
..#..#.###
#o.....#..
....###..o
o.......o#
24