AT_codefestival_2016_final_i Reverse Grid
题目描述
有一个纵向 $H$ 行、横向 $W$ 列的网格,第 $i$ 行第 $j$ 列的格子中写有字符 $S_{i,j}$。
すぬけくん可以对这个网格进行以下两种操作:
- 行反转:选择一行,将该行反转。
- 列反转:选择一列,将该列反转。
例如,先反转第 $2$ 行,再反转第 $4$ 列,网格会发生如下变化:

通过以任意顺序进行上述操作若干次,可以得到多少种不同的字符排列方式?
输入格式
输入以如下格式从标准输入给出。
> $H$ $W$ $S_{1,1}$ $S_{1,2}$ $\ldots$ $S_{1,W}$ $S_{2,1}$ $S_{2,2}$ $\ldots$ $S_{2,W}$ $:$ $S_{H,1}$ $S_{H,2}$ $\ldots$ $S_{H,W}$
输出格式
请输出答案对 $1000000007\ (=10^9+7)$ 取模后的结果。
说明/提示
## 限制条件
- $1 \leq H, W \leq 200$
- $S_{i,j}$ 是小写英文字母(`a`-`z`)。
## 样例解释 1
可以得到如下 $6$ 种不同的排列方式。

由 ChatGPT 4.1 翻译