AT_agc023_b [AGC023B] Find Symmetries

题目描述

Snuke 有两块板子。每块板都是一个 $n$ 行 $n$ 列的网格。对于这两块板子,记第 $i$ 行 $j$ 列的格子为 $(i,j)$。 第一块板子的每个格子上都写着一个小写字母:格子 $(i,j)$ 上的字母为 $S_{i,j}$。第二块板子上没有写任何东西。 Snuke 将以以下方法在第二块板子上写下字母: 首先,选择两个整数 $A$,$B$;然后在第二块板子的每个格子上写下一个字母。具体的说,第二块板子的格子 $(i+A,j+B)$ 将写上 $S_{i,j}$。这里第 $n+k$ 行即第 $k$ 行,第 $n+k$ 列即为第 $k$ 列。 此操作后,若对任意的 $i,j$,第二块板的格子 $(j,i)$ 上的字母和格子 $(i,j)$ 上的字母相同,则称第二块板为“好板”。 请你求出有多少 $A,B$ 满足 $0\le A,B

输入格式

输入来自以下格式的标准输入: $\boxed{\begin{matrix}n\\ S_{1,1}S_{1,2}\dots S_{1,n}\\ S_{2,1}S_{2,2}\dots S_{2,n}\\ \vdots\\ S_{n,1}S_{n,2}\dots S_{n,n}\end{matrix}}$

输出格式

输出一个数,表示有多少 $A,B$ 满足 $0\le A,B

说明/提示

- $1\le n\le 300$。 - $S_{i,j}$ 都是小写字母。 #### 样例解释: 对于样例 1:对于所有可能的 $A$ 和 $B$,二号板上的字母如下所示: ![](https://img.atcoder.jp/agc023/2414e26dc3abb6dd7bfa0c800bb4af0c.png) 当且仅当 $(A,B)=(0,1)$ 或 $(A,B)=(1,0)$ 时满足第二块板是“好板”,因此答案是 $2$。 对于样例 2,所有被选中的 $A$ 和 $B$ 都会使第二块板成为“好板”。 对于样例 3,没有 $A$ 和 $B$ 可以使第二块板成为“好板”。