유리 소 장식품 맞추기

뒤집기와 회전, 이동을 거쳐 색깔 소 조각 세 개로 원래 모양을 채우는 조합 수를 셉니다.

보통7완전 탐색기하행렬해시맵아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

농부 John은 집을 조금 더 꾸미기로 했다. 도자기 가게에 들렀다가 섬세한 유리 소 장식품을 발견했고, 벽난로 선반에 놓으면 어울릴 것 같아 사기로 했다.

소 장식품의 모양은 아래처럼 N×MN \times M 크기의 문자 배열로 적는다. 소문자 알파벳은 장식품의 한 부분을 나타내고, 서로 다른 문자는 서로 다른 색이다. .은 아무것도 없는 빈 칸이다.

...............
...............
x..x...........
xxxx...........
xxxxaaaaaaa....
.xx.aaaaaaaaa..
....aaaaaaa.aa.
....ll...ll....
....vv...vv....
...............

값을 치르기 직전에 황소 한 마리가 가게를 가로질러 달려들어, 농부 John이 사려던 장식품은 물론 선반에 있던 다른 장식품까지 부숴 놓았다. 소 장식품은 세 조각으로 깨졌고, 바닥에 흩어진 KK개의 조각 사이에 섞여 버렸다. 바닥의 조각도 소 장식품과 같은 방식으로 문자 배열로 적는다.

바닥에 떨어진 조각은 가로나 세로로 뒤집혀 있거나 90도씩 돌아가 있을 수 있다. 조각은 옮길 수 있고, 뒤집을 수 있고, 90도씩 돌릴 수 있다. 이렇게 놓은 세 조각이 서로 겹치지 않으면서 소 장식품의 모든 칸을 정확히 한 번씩 덮고 색까지 모두 같으면, 그 세 조각으로 소 장식품을 다시 만든 것이다.

바닥에 떨어진 KK개의 조각 중에서 소 장식품을 다시 만들 수 있는 세 조각의 조합이 몇 가지인지 세어 농부 John을 도와주자.

입력

첫째 줄에 정수 KK가 주어진다 (4K1004 \le K \le 100). 이어서 조각 설명이 K+1K + 1개 주어진다. 첫 번째 설명은 원래 소 장식품의 모양이고, 그다음 KK개는 바닥에 떨어진 조각의 모양이다.

각 조각 설명의 첫 줄에는 두 정수 RR, CC가 주어지고, 다음 RR개의 줄에는 각 칸을 나타내는 문자가 CC개씩 주어진다. 각 문자는 색을 나타내는 소문자 알파벳이거나 빈 칸을 나타내는 .이다. 원래 소 장식품 설명에서는 3R,C5003 \le R, C \le 500이고, 바닥에 떨어진 조각 설명에서는 1R,C1001 \le R, C \le 100이다. 각 조각은 상하좌우로 이어져 있고, 비어 있지 않은 칸이 적어도 하나 있다.

출력

원래 소 장식품을 다시 만들 수 있는 조각 ii, jj, kk (i<j<ki < j < k)의 조합의 개수를 출력한다.

힌트

예제에서 가능한 조합은 세 가지이고, 각각 조각 0, 1, 2와 조각 0, 2, 4, 그리고 조각 1, 3, 4를 쓴다. 조각 번호는 0부터 센다.