AT_codefestival_2016_final_i Reverse Grid

题目描述

有一个纵向 $H$ 行、横向 $W$ 列的网格,第 $i$ 行第 $j$ 列的格子中写有字符 $S_{i,j}$。 すぬけくん可以对这个网格进行以下两种操作: - 行反转:选择一行,将该行反转。 - 列反转:选择一列,将该列反转。 例如,先反转第 $2$ 行,再反转第 $4$ 列,网格会发生如下变化: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_codefestival_2016_final_i/2c78e6cf67ba2ff8a353121894255544acf43c84.png) 通过以任意顺序进行上述操作若干次,可以得到多少种不同的字符排列方式?

输入格式

输入以如下格式从标准输入给出。 > $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$ 种不同的排列方式。 ![](https://atcoder.jp/img/code-festival-2016-final/ddf2925467af2c9734194a886f819a2b.png) 由 ChatGPT 4.1 翻译