atcoder#AGC023B. [AGC023B] Find Symmetries

[AGC023B] Find Symmetries

配点 : 500500

問題文

すぬけ君は、NNNN 列からなるマス目状に区切られた盤面を 22 つ持っています。 どちらの盤面についても、上から ii 行目、左から jj 列目のマスをマス (i,j)(i,j) と呼ぶことにします。

11 つめの盤面には、すべてのマスに 11 つの英小文字が書かれています。 マス (i,j)(i,j) に書かれている文字は Si,jS_{i,j} です。 22 つめの盤面には、まだ何も書かれていません。

すぬけ君は、次のような手順で 22 つめの盤面に文字を書き込みます。

  • まず、22 つの整数 A,BA, B ( 0A,B<N0 \leq A, B < N ) を選ぶ。
  • すべてのマスに文字を書き込む。 具体的には、22 つめの盤面のマス (i,j)(i,j) に、11 つめの盤面のマス (i+A,j+B)( i+A, j+B ) の文字を書き込む。 ここで、N+kN+k 行目と表される行は kk 行目を意味する。 同様に、N+kN+k 列目と表される列は kk 列目を意味する。

操作後、22 つめの盤面がよい盤面であるとは、すべての i,ji, j ( 1i,jN1 \leq i, j \leq N ) に対して、 マス (i,j)(i,j) とマス (j,i)(j,i) にかかれている文字が等しいことを意味します。

22 つめの盤面がよい盤面になるような整数 A,BA, B ( 0A,B<N0 \leq A, B < N ) の選び方が何通りあるかを求めてください。

制約

  • 1N3001 \leq N \leq 300
  • Si,jS_{i,j} ( 1i,jN1 \leq i, j \leq N ) は英小文字

入力

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

NN

S1,1S1,2..S1,NS_{1,1}S_{1,2}..S_{1,N}

S2,1S2,2..S2,NS_{2,1}S_{2,2}..S_{2,N}

::

SN,1SN,2..SN,NS_{N,1}S_{N,2}..S_{N,N}

出力

22 つめの盤面がよい盤面になるような整数 A,BA, B ( 0A,B<N0 \leq A, B < N ) の選び方が何通りあるかを出力せよ。

2
ab
ca
2

A,BA, B の組に対して、22 つめの盤面は図のようになります。 22 つめの盤面がよい盤面となっているのは (A,B)=(0,1)(A,B) = (0,1)(A,B)=(1,0)(A,B) = (1,0) のときです。 よって答えは 22 です。

4
aaaa
aaaa
aaaa
aaaa
16

どのように A,BA, B を選んでも、22 つめの盤面はよい盤面になります。

5
abcde
fghij
klmno
pqrst
uvwxy
0

どのように A,BA, B を選んでも、22 つめの盤面はよい盤面になりません。