#icpc2013autumni. [icpc2013autumn_i]Overwriting Game

[icpc2013autumn_i]Overwriting Game

题目描述

你有一个由方形单元格组成的矩形棋盘,棋盘上有 HHWW 列的单元格。行从上到下编号为 11HH,列从左到右编号为 11WW。棋盘上的每个单元格都被涂成黑色或白色。

你将按照以下步骤给棋盘上色:

  1. 随机选择一个单元格 (i,j)(i, j) 和一种颜色 cc,其中 1iH1 \leq i \leq H1jW1 \leq j \leq Wc{c \in \{黑色,白色}\}
  2. 使用颜色 cc 给所有满足 1ii1 \leq i' \leq i1jj1 \leq j' \leq j 的单元格 (i,j)(i', j') 上色。

下面是上色操作的示例。你有一个 3×43 \times 4 的棋盘,初始颜色如下图左侧所示。如果你的随机选择是单元格 (2,3)(2, 3) 和黑色,棋盘会变成如下图右侧所示。这次操作结果共有 66 个单元格被涂成黑色。注意,即使颜色在操作中没有实际改变,我们也会将单元格标记为“涂色”,例如示例中的单元格 (1,2)(1, 2)

painting operation

图:上色操作示例

给定棋盘的初始颜色和目标颜色,你需要重复执行上色操作,直到棋盘变成目标颜色。编写一个程序来计算操作序列中涂色单元格的期望总数。


输入

输入包含多个数据集。数据集的数量最多为 100100

每个数据集的第一行包含两个整数 HHWW1H,W51 \leq H, W \leq 5),表示棋盘的行数和列数。然后给出了棋盘的两种上色配置,前者是初始上色,后者是目标上色。一个上色配置由 HH 行描述,每行包含 WW 个字符。每个字符可以是 B 或 W,分别表示黑色单元格或白色单元格。两个上色配置之间有一个空行,并在每个数据集之后也有一个空行。你可以假设每个数据集的预期结果不会超过 10910^9

输入以两个零的一行结尾,程序不应将其视为数据集。


输出

对于每个数据集,你的程序应输出一个结果。你的答案的绝对误差或相对误差必须小于 10610^{-6}


示例输入

1 2
BB

WW

2 1
B
W

B
W

2 2
BW
BW

WW
WW

3 4
BBBB
BBBB
BBBB

WWWW
WWWW
WWWW

5 5
BBBBB
BBBBB
BBBBB
BBBBB
BBBBB

BBBBB
BBBWB
BBBBB
BWBBB
BBBBB

0 0```

## 示例输出

```plain
6.0000000000
0.0000000000
12.8571428571
120.0000000000
23795493.8449918639```