atcoder#MUJINPC2017B. Row to Column

Row to Column

题目描述

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

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

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

  • 整数 i i , j j (1 < = i, j < = N 1\ <\ =\ i,\ j\ <\ =\ N ) をそれぞれ自由に選ぶ。 マス (i, 1) (i,\ 1) , (i, 2) (i,\ 2) , ... ... , (i, N) (i,\ N) の色をそれぞれ c1 c_1 , c2 c_2 , ... ... , cN c_N として記憶する。 その後、マス (1, j) (1,\ j) , (2, j) (2,\ j) , ... ... , (N, j) (N,\ j) の色をそれぞれ c1 c_1 , c2 c_2 , ... ... , cN c_N で塗り替える。

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

输入格式

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

N N a11 a_{11} ... ... a1N a_{1N} : : aN1 a_{N1} ... ... aNN a_{NN}

输出格式

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

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

提示

制約

  • 2 < = N < = 500 2\ <\ =\ N\ <\ =\ 500
  • aij a_{ij} . または # である。

部分点

  • 300 300 点分のテストケースでは、N < = 3 N\ <\ =\ 3 が成り立つ。

Sample Explanation 1

例えば、次のように操作を行うと、次図のようにマス目の配色が変わります。 - i = 1 i\ =\ 1 , j = 2 j\ =\ 2 と選んで操作を行う。 - i = 1 i\ =\ 1 , j = 1 j\ =\ 1 と選んで操作を行う。 - i = 1 i\ =\ 1 , j = 2 j\ =\ 2 と選んで操作を行う。 ![6a0314bb2b1073694a7ef5a062e77b13.png](https://atcoder.jp/img/mujin/6a0314bb2b1073694a7ef5a062e77b13.png)