#agc023b. [agc023_b]Find Symmetries

[agc023_b]Find Symmetries

题目描述

Snuke有两个棋盘,每个棋盘都被划分为一个 NNNN 列的网格。对于这两个棋盘,从上到下数第 ii 行、从左到右数第 jj 列的方格被称为方格 (i,j)(i,j)

第一个棋盘上的每个方格中都有一个小写英文字母。方格 (i,j)(i,j) 中的字母为 Si,jS_{i,j}。第二个棋盘上还没有写任何东西。

Snuke将在第二个棋盘上写字,方法如下:

  • 首先,选择两个整数 AABB0A,B<N0 \leq A, B < N )。
  • 在第二个棋盘的每个方格中写入一个字母。具体而言,将第一个棋盘上方格 (i+A,j+B)( i+A, j+B ) 中的字母写入第二个棋盘上方格 (i,j)(i,j) 中。在这里,第 kk 行也可以表示为第 (N+k)(N+k) 行,第 kk 列也可以表示为第 (N+k)(N+k) 列。

进行完这个操作后,第二个棋盘被称为_好棋盘_,当且仅当对于每个 iijj1i,jN1 \leq i, j \leq N),方格 (i,j)(i,j) 中的字母和方格 (j,i)(j,i) 中的字母相等。

找出选择整数 AABB0A,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}

输出

打印选择整数 AABB0A,B<N0 \leq A, B < N )使得第二个棋盘成为好棋盘的方法数。


样例输入 1

2
ab
ca

样例输出 1

2

对于每对 AABB,第二个棋盘如下所示:

(A,B)=(0,1)(A,B) = (0,1)(A,B)=(1,0)(A,B) = (1,0) 时,第二个棋盘是一个好棋盘,因此答案是 22


样例输入 2

4
aaaa
aaaa
aaaa
aaaa

样例输出 2

16

每个可能的 AABB 的选择都会使第二个棋盘成为好棋盘。


样例输入 3

5
abcde
fghij
klmno
pqrst
uvwxy

样例输出 3

0

没有任何可能的 AABB 的选择会使第二个棋盘成为好棋盘。