你正在使用乐高(Lego)积木来训练一个人工视觉系统。写一个程序,在给定从两个角度拍摄的乐高建筑照片的情况下,计算有多少种不同的搭建方式。
在本题中,只有一种乐高积木(具有 $2 \times 2$ 的“凸起”,见下图),但它可以有三种不同的颜色:白色(W)、灰色(G)或黑色(B)。所有积木的数量都是无限的。你使用一个 $6 \times 6$ 凸起大小的正方形底座。每个积木的边缘必须与该底座平行,且任何积木都不能延伸到基座之外。每个积木必须支撑在至少一个下方的积木上。
左:允许的将一个积木放置在另一个积木上方的方式。中:非法的方式(上方的积木悬空)。右:另一种非法的方式(上方的积木延伸到了底座之外)。
输入格式
输入的第一行包含一个整数 $H$($1 \le H \le 6$),表示建筑的高度。
接下来是 $H$ 行,每行包含 6 个字符,给出从一侧(在下图中标为 A)看到的建筑图像。第 $i$ 行的第 $j$ 个字符指定了从上往下数第 $i$ 行、从左往右数第 $j$ 列所看到的内容。每个字符可以是 W、G、B 或 .,分别表示颜色(W、G 或 B)或空洞(.)。请注意,你无法估计深度,因此在某个位置看到的颜色既可能属于靠近前边缘的积木,也可能属于更靠后的积木,只要没有其他积木阻挡视线即可。
第一张图像之后是另一组 $H$ 行,表示从另一个角度看到的建筑,该角度是观察者绕建筑逆时针旋转 90 度后看到的内容(在下图中标为 B)。
输出格式
输出一行,包含一个整数:满足输入中给出的图像的、不同的乐高建筑的数量。
注意,即使两个不同的可能建筑可以通过旋转或镜像相互得到,它们也应该被分别计算。对于给定的输入,答案将始终适合有符号的 64 位整数。
样例
输入样例 1
2 WWGG.. .BB.WW .WGG.. WWGG..
输出样例 1
6
说明
样例中可能的一种建筑结构。