P16010 [CCO 2016 Day 2] O Canada 哦!加拿大

题目描述

在本题中,一个**网格**是一个 $N$ 行 $N$ 列的单元格数组,其中每个单元格要么是红色,要么是白色。 一些网格与其他网格是**相似**的。当且仅当网格 $A$ 可以通过若干次**改变**变成网格 $B$ 时,称网格 $A$ 与网格 $B$ 相似。一次改变包括选择网格中的一个 $2$ 行 $2$ 列的正方形,并翻转这个正方形中每个单元格的颜色。(正方形中的红色单元格会变成白色;白色单元格会变成红色。) 给定 $G$ 个网格。请计算有多少对网格是相似的。(形式化地,将这些网格编号为 $1$ 到 $G$,请计算满足 $1 \le i < j \le G$ 且第 $i$ 个网格与第 $j$ 个网格相似的元组 $(i,j)$ 的数量。)

输入格式

输入的第一行包含 $N\ (2 \le N \le 10)$,表示网格的大小。第二行包含 $G\ (2 \le G \le 10\,000)$,表示网格的数量。接下来输入包含 $N \cdot G$ 行,每行包含 $N$ 个字符,每个字符要么是 `R`,要么是 `W`,表示网格中对应元素的颜色(红色或白色)。此外,在输入的前两行之后,接下来的 $N$ 行描述第一个网格,再接下来的 $N$ 行描述第二个网格,依此类推。 在本题总共 $25$ 分中,有 $12$ 分满足 $2 \le G \le 10$。

输出格式

输出相似网格对的数量。

说明/提示

恰好有两个网格,它们是相似的,因为第一个网格可以通过一次改变变成第二个网格(选择整个网格构成的 $2$ 行 $2$ 列正方形)。