#hhkb2020e. [hhkb2020_e]Lamps

[hhkb2020_e]Lamps

問題文

HH 行、横 WW 列からなるマス目があり、それぞれのマスは散らかっているか散らかっていないかのどちらかです。

今からあなたはこのマス目のうち 00 個以上の散らかっていないマスに照明を置きます。

照明は置かれたマスの上下左右の 44 方向に、マス目の端もしくは最初に散らかっているマスにぶつかる直前まで照らします (散らかっているマスは照らされません)。照明は、置かれたマス自身も照らします。

整数 H,WH, WHH 個の長さ WW の文字列 SiS_i が与えられます。 SiS_ijj 文字目が . のとき、上から ii 行目、左から jj 列目のマスは散らかっていません。SiS_ijj 文字目が # のとき、上から ii 行目、左から jj 列目のマスは散らかっています。

散らかっていないマスの個数を KK 個だとすると、照明の置き方は全部で 2K2^K 通りあります。 この 2K2^K 通りそれぞれについて、11 個以上の照明によって照らされるマスの個数を計算したときの総和を 1,000,000,0071,000,000,007 で割ったあまりを求めてください。

制約

  • 1leqHleq20001 \\leq H \\leq 2000
  • 1leqWleq20001 \\leq W \\leq 2000
  • SiS_i.# のみからなる長さ WW の文字列

入力

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

HH WW S1S_1 :: SHS_H

出力

2K2^K 通りそれぞれについて、11 個以上の照明によって照らされるマスの個数を計算したときの総和を 1,000,000,0071,000,000,007 で割ったあまりを出力せよ。


入力例 1

1 5
..#..

出力例 1

48

全部で照明の置き方は 1616 通りあります。

  • このうち 99 通り (左から 11 番目か 22 番目の少なくとも一方に照明が置かれている、かつ左から 44 番目か 55 番目の少なくとも一方に照明が置かれている) では、44 マスが照らされます。
  • このうち 33 通り (左から 11 番目か 22 番目の少なくとも一方に照明が置かれている、かつ左から 44 番目と 55 番目のどちらにも照明が置かれていない) では、22 マスが照らされます。
  • このうち 33 通り (左から 44 番目か 55 番目の少なくとも一方に照明が置かれている、かつ左から 11 番目と 22 番目のどちらにも照明が置かれていない) では、22 マスが照らされます。
  • このうち 11 通り (照明が 11 つも置かれていない) では、00 マスが照らされます。

求める総和は $4 \\times 9 + 2 \\times 3 + 2 \\times 3 + 0 \\times 1 = 48$ となります。


入力例 2

2 3
..#
#..

出力例 2

52