#P16700. [ICPC 2017 Jakarta R]Sacred Scarecrows

[ICPC 2017 Jakarta R]Sacred Scarecrows

题目描述

Nerissa 拥有一块矩形稻田,被划分成 RR 行、CC 列的等大方格。

每个方格属于以下两种类型之一:

  • 空地:用字符 . 表示,可以放置稻草人;
  • 已种植水稻的土地:用字符 v 表示,不能放置稻草人。

为了防止乌鸦和麻雀破坏庄稼,Nerissa 决定在若干空地上放置稻草人。

为了同时防止其他人偷取庄稼,稻草人的排列必须是神圣的

一种排列被称为神圣排列,当且仅当满足:

  1. 每一行至少包含一个稻草人;
  2. 任意相邻的两列中,至少有一个稻草人。

第二个条件是指,对每个:

1c<C,1\le c<C,

cc 列和第 c+1c+1 列中的稻草人总数至少为 11

两种排列不同,当且仅当存在某个方格,在一种排列中放置了稻草人,而在另一种排列中没有。

请计算神圣排列的数量。

输入格式

第一行包含两个整数 R,CR,C

1R14,1\le R\le14, 1C1000.1\le C\le1000.

接下来 RR 行,每行包含一个长度为 CC 的字符串,描述稻田:

  • . 表示空地;
  • v 表示种植水稻的土地。

输出格式

输出一个整数,表示神圣排列的数量。

答案可能很大,请对:

10000000071\,000\,000\,007

取模后输出。

样例 1

输入

2 2
v.
..

输出

3

样例 2

输入

1 3
...

输出

5

样例 3

输入

2 3
vvv
...

输出

0

样例 4

输入

3 3
...
.v.
...

输出

145

样例 5

输入

2 4
.vv.
.v.v

输出

5