Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:N/A 空间限制:N/A

#3500. 「BalticOI 2010」乐高 Lego

统计

题目描述

你正在使用乐高积木来训练人工视觉系统。

本题中只有一种乐高积木—— $2 \times 2$ 的砖块。它有白(W)、灰(G)、黑(B)三种颜色。所有的积木都有无限个。
你在一个 $6 \times 6$ 的底板上砌砖块。砖块边缘必须平行于底板,且砖块不能延伸到地板的外面。每块积木必须有至少一块积木支持,也就是不能浮空(但没说不可以部分悬挂)。

左:将积木放在另一个积木的顶部上的一种可行的方式。中:一种非法的方式(上层积木挂在空中)。右:另一种非法方式(上方的积木延伸到底板外)。

给出从两个角度拍摄的积木建筑的图片,试求:要建立它有多少种不同的方式。

输入格式

第一行包含 $H$($1 \le H \le 6$),即建筑的高度。然后 $H$ 行每行 $6$ 个字符,给出从一侧(下图中标记为 A)所见的建筑图。

第 $i$ 行的第 $j$ 个字符表示你从上方看第 $i$ 行左边的第 $j$ 列所看到的颜色。每个字符都可以是 WGB. 中的一种,表示一种颜色(W,GB)或孔(.)。请注意,你无法估计深度,因此只要没有其他积木挡住视线,在某个位置看到的颜色可能属于某个靠前的积木,也可能属于某个靠后的积木。

接下来 $H$ 行是观察者逆时针绕建筑旋转 $90$ 度(在下图中标记为 B)看到的图片。

输出格式

输出一行一个整数,表示不同的乐高建筑的个数。通过旋转或翻转得到的建筑算作不同。保证答案在 64 位有符号整数范围内。

样例

input

2
WWGG..
.BB.WW
.WGG..
WWGG..

output

6