Đối xứng

View as PDF

Time limit: 1.0s , Memory limit: 256M , Points: 0 (partial)

Bạn được cho hai tấm bảng đều bao gồm N hàng và N cột. Các hàng được đánh số từ 0 đến N-1 từ trên xuống dưới và các cột được đánh số từ 0 đến N-1 từ trái sang phải.

Ban đầu, mỗi ô (i,j) ở hàng i, cột j của bảng thứ nhất đều được ghi một ký tự chữ cái in thường từ a đến z, các ô của bảng thứ hai đều rỗng. Bạn được thực hiện công việc sau đây:

  • Đầu tiên, chọn hai số nguyên AB thỏa mãn 0 \le A,B \le N-1.
  • Tiếp theo, tiến hành ghi các chữ cái lên bảng thứ hai theo quy tắc sau: chữ cái tại ô (i,j) của bảng thứ nhất được ghi lên ô ((i+A)\%N, (j+B)\%N) của bảng thứ hai.

Sau khi thực hiện công việc trên, bảng thứ hai được gọi là đối xứng nếu với mọi cặp số nguyên (i,j) (0 \le i,j \le N-1), chữ cái được ghi ở ô (i,j) và ô (j,i) là như nhau.

Nhiệm vụ của bạn hãy đếm số cách chọn hai số nguyên AB sao cho bảng thứ hai trở nên đối xứng.

Input

  • Dòng đầu tiên chứa số nguyên N (1 \le N \le 300).
  • Bảng thứ nhất được mô tả bởi N dòng tiếp theo, mỗi dòng chứa N ký tự chữ cái in thường.

Output

  • In ra số cách lựa chọn AB phù hợp.

Examples

Sample Input 1
2
ab
ca
Sample Output 1
2
Sample Input 2
2
aa
aa
Sample Output 2
4
Sample Input 3
2
ab
cd
Sample Output 3
0

Scoring

  • Subtask 1 với 50\% số điểm: N \le 50.
  • Subtask 2 với 50\% số điểm: Không có ràng buộc gì thêm

Notes

Trong ví dụ thứ nhất, các cách chọn AB được mô tả như sau:

drawing

Bảng thứ hai trở nên đẹp với hai cách chọn A=0,B=1A=1,B=0

Trong ví dụ thứ hai, mọi cách chọn AB đều thỏa mãn.


Comments