atcoder#ABC233G. [ABC233G] Strongest Takahashi

[ABC233G] Strongest Takahashi

配点 : 600600

問題文

N×NN \times N のグリッドがあり、いくつかのマスにはブロックが置いてあります。 グリッドの情報は NN 個の文字列 S1,S2,,SNS_1,S_2,\dots,S_N によって以下の形式で与えられます。

  • SiS_ijj 文字目が # のとき、グリッドの上から ii マス目、左から jj マス目にブロックがある。
  • SiS_ijj 文字目が . のとき、グリッドの上から ii マス目、左から jj マス目にブロックがない。

高橋くんは、以下の操作を 00 回以上好きなだけ行うことができます。

  • まず、 11 以上 NN 以下の整数 DD と、グリッド内の D×DD \times D の部分正方形を選ぶ。
  • その後、体力 DD を消費して部分正方形内のブロックをすべて破壊する。

高橋くんがすべてのブロックを破壊するのに必要な体力の最小値を求めてください。

制約

  • NN は整数
  • 1N501 \le N \le 50
  • SiS_i#. のみからなる
  • Si=N|S_i|=N

入力

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

NN

S1S_1

S2S_2

\vdots

SNS_N

出力

答えを整数として出力せよ。

5
##...
.##..
#.#..
.....
....#
4

以下の部分正方形を選ぶことで、消費する体力を 44 にすることができ、これが最適です。

  • 上から 11 マス目、左から 11 マス目を左上とした、 3×33 \times 3 の部分正方形
  • 上から 55 マス目、左から 55 マス目を左上とした、 1×11 \times 1 の部分正方形
3
...
...
...
0

グリッドにブロックが 11 つもない場合もあります。

21
.....................
.....................
...#.#...............
....#.............#..
...#.#...........#.#.
..................#..
.....................
.....................
.....................
..........#.....#....
......#..###.........
........#####..#.....
.......#######.......
.....#..#####........
.......#######.......
......#########......
.......#######..#....
......#########......
..#..###########.....
.........###.........
.........###.........
19