시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
레고 블록으로 인공 시각 시스템을 훈련하려고 한다. 두 방향에서 촬영한 레고 구조물의 그림이 주어졌을 때, 그 그림을 만족하는 서로 다른 구조물을 몇 가지 방법으로 만들 수 있는지 구하라.
이 문제에서는 2 x 2 돌기가 있는 한 종류의 블록만 사용한다. 각 블록의 색은 흰색(W), 회색(G), 검은색(B) 중 하나이며, 모든 색의 블록은 무한히 많다. 바닥판은 6 x 6 돌기를 가진 정사각형이다. 모든 블록의 변은 바닥판의 변과 평행해야 하며, 바닥판 밖으로 벗어나면 안 된다. 또한 모든 블록은 아래에 있는 블록이나 바닥판 위에 놓여 있어야 한다.

왼쪽은 다른 블록 위에 블록을 올바르게 올린 경우이다. 가운데는 위쪽 블록이 공중에 떠 있으므로 불가능한 경우이고, 오른쪽은 위쪽 블록이 바닥판 밖으로 나가므로 불가능한 경우이다.
첫째 줄에 구조물의 높이 H가 주어진다. (1 <= H <= 6)
이어서 H개의 줄이 주어진다. 각 줄은 길이 6이며, 한쪽 방향(그림에서 A 방향)에서 본 구조물을 나타낸다. 위에서부터 i번째 줄의 왼쪽에서 j번째 문자는, 위에서 i번째 높이의 j번째 세로줄을 바라볼 때 보이는 것을 나타낸다. 문자는 W, G, B, . 중 하나이다. W, G, B는 각각 해당 색의 블록이 보인다는 뜻이고, .은 그 위치에 아무 블록도 보이지 않는다는 뜻이다. 한 방향에서 보면 깊이를 알 수 없으므로, 보이는 색은 앞쪽 가장자리에 가까운 블록일 수도 있고, 그 앞을 가리는 블록이 없다면 더 뒤쪽에 있는 블록일 수도 있다.
그 뒤에는 다른 방향에서 본 그림이 같은 형식으로 H줄 주어진다. 이 방향은 관찰자가 구조물 주위를 반시계 방향으로 90도 이동한 위치(그림에서 B 방향)이다.
주어진 두 그림을 모두 만족하는 서로 다른 레고 구조물의 수를 한 줄에 출력한다. 서로 다른 구조물이 회전이나 대칭으로 서로 같아질 수 있더라도, 입력에서의 위치와 방향이 다르면 각각 따로 센다. 답은 항상 부호 있는 64비트 정수 범위에 들어간다.

제공된 보이는 테스트를 만족하는 가능한 구조물 중 하나이다.