#MUJINPC2017B. Row to Column

Row to Column

配点 : 13001300

問題文

NN 行、横 NN 列の正方形状のマス目があります。 上から ii 行目、左から jj 列目のマスを (i, j)(i,\ j) と表します。

最初、各マスは白か黒です。 最初のマス目の配色は、正方形状に並ぶ文字 aija_{ij} (1i, jN1 \leq i,\ j \leq N) として与えられます。 マス (i, j)(i,\ j) が白ならば aija_{ij}. であり、黒ならば aija_{ij}# です。

あなたは、マス目の配色を塗り替えるロボットを開発しています。 このロボットは次の操作を繰り返し行うことができます。

  • 整数 ii, jj (1i, jN1 \leq i,\ j \leq N) をそれぞれ自由に選ぶ。 マス (i, 1)(i,\ 1), (i, 2)(i,\ 2), ......, (i, N)(i,\ N) の色をそれぞれ c1c_1, c2c_2, ......, cNc_N として記憶する。 その後、マス (1, j)(1,\ j), (2, j)(2,\ j), ......, (N, j)(N,\ j) の色をそれぞれ c1c_1, c2c_2, ......, cNc_N で塗り替える。

あなたの目標は、すべてのマスを黒にすることです。 すべてのマスを黒にすることが可能か判定し、可能ならば必要な操作回数の最小値を求めてください。

制約

  • 2N5002 \leq N \leq 500
  • aija_{ij}. または # である。

部分点

  • 300300 点分のテストケースでは、N3N \leq 3 が成り立つ。

入力

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

NN

a11a_{11}......a1Na_{1N}

::

aN1a_{N1}......aNNa_{NN}

出力

すべてのマスを黒にすることが可能ならば、必要な操作回数の最小値を出力せよ。 不可能ならば、代わりに -1 を出力せよ。

2
#.
.#
3

例えば、次のように操作を行うと、次図のようにマス目の配色が変わります。

  • i=1i = 1, j=2j = 2 と選んで操作を行う。
  • i=1i = 1, j=1j = 1 と選んで操作を行う。
  • i=1i = 1, j=2j = 2 と選んで操作を行う。

6a0314bb2b1073694a7ef5a062e77b13.png

2
..
..
-1
2
##
##
0
3
.#.
###
.#.
2
3
...
.#.
...
5