atcoder#CODEFESTIVAL2016FINALI. Reverse Grid

Reverse Grid

题目描述

H H 行、横 W W 列のマス目があり、i i 行目の j j 列目のマスには文字 Si,j S_{i,j} が書かれています。

すぬけくんはこのマス目に対して以下の 2 2 種類の操作を行うことが出来ます。

  • 行リバース:行を 1 1 つ選び、その行をリバースする。
  • 列リバース:列を 1 1 つ選び、その列をリバースする。

例えば、2 2 行目をリバースした後に 4 4 列目をリバースすると以下のように変化します。

上記の操作を好きな順番で何回か行うことによって作ることの出来る文字の配置は何通り考えられるでしょうか?

输入格式

入力は以下の形式で標準入力から与えられる。

H H W W S1,1 S_{1,1} S1,2 S_{1,2} ... ... S1,W S_{1,W} S2,1 S_{2,1} S2,2 S_{2,2} ... ... S2,W S_{2,W} : : SH,1 S_{H,1} SH,2 S_{H,2} ... ... SH,W S_{H,W}

输出格式

答えを 1000000007 (=109+7) 1000000007\ (=10^9+7) で割ったあまりを出力せよ。

题目大意

给出 H×WH\times W 的字符矩阵,每次可以进行以下两种操作之一:

  • 选择一行,将其左右翻转。
  • 选择一列,将其上下翻转。

可以进行任意多次操作,求可以形成的字符矩阵数量,对 109+710^9+7 取模。1H,W2001\le H,W\le200

2 2
cf
cf
6
1 12
codefestival
2

提示

制約

  • 1H,W200 1≦H,W≦200
  • Si,j S_{i,j} は小文字アルファベット(a-z)である。

Sample Explanation 1

以下の 6 6 通りの配置が考えられます。 ![](https://atcoder.jp/img/code-festival-2016-final/ddf2925467af2c9734194a886f819a2b.png)