#codefestival2016finali. [codefestival_2016_final_i]Reverse Grid

[codefestival_2016_final_i]Reverse Grid

問題文

HH 行、横 WW 列のマス目があり、ii 行目の jj 列目のマスには文字 Si,jS_{i,j} が書かれています。

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

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

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

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

制約

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

入力

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

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

出力

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


入力例 1

2 2
cf
cf

出力例 1

6

以下の 66 通りの配置が考えられます。


入力例 2

1 12
codefestival

出力例 2

2