뒤집기와 회전, 이동을 거쳐 색깔 소 조각 세 개로 원래 모양을 채우는 조합 수를 셉니다.
보통7완전 탐색기하행렬해시맵아직 제출이 없습니다시간 제한5초메모리 제한512 MB농부 John은 집을 조금 더 꾸미기로 했다. 도자기 가게에 들렀다가 섬세한 유리 소 장식품을 발견했고, 벽난로 선반에 놓으면 어울릴 것 같아 사기로 했다.
소 장식품의 모양은 아래처럼 N×M 크기의 문자 배열로 적는다. 소문자 알파벳은 장식품의 한 부분을 나타내고, 서로 다른 문자는 서로 다른 색이다. .은 아무것도 없는 빈 칸이다.
...............
...............
x..x...........
xxxx...........
xxxxaaaaaaa....
.xx.aaaaaaaaa..
....aaaaaaa.aa.
....ll...ll....
....vv...vv....
...............
값을 치르기 직전에 황소 한 마리가 가게를 가로질러 달려들어, 농부 John이 사려던 장식품은 물론 선반에 있던 다른 장식품까지 부숴 놓았다. 소 장식품은 세 조각으로 깨졌고, 바닥에 흩어진 K개의 조각 사이에 섞여 버렸다. 바닥의 조각도 소 장식품과 같은 방식으로 문자 배열로 적는다.
바닥에 떨어진 조각은 가로나 세로로 뒤집혀 있거나 90도씩 돌아가 있을 수 있다. 조각은 옮길 수 있고, 뒤집을 수 있고, 90도씩 돌릴 수 있다. 이렇게 놓은 세 조각이 서로 겹치지 않으면서 소 장식품의 모든 칸을 정확히 한 번씩 덮고 색까지 모두 같으면, 그 세 조각으로 소 장식품을 다시 만든 것이다.
바닥에 떨어진 K개의 조각 중에서 소 장식품을 다시 만들 수 있는 세 조각의 조합이 몇 가지인지 세어 농부 John을 도와주자.
첫째 줄에 정수 K가 주어진다 (4≤K≤100). 이어서 조각 설명이 K+1개 주어진다. 첫 번째 설명은 원래 소 장식품의 모양이고, 그다음 K개는 바닥에 떨어진 조각의 모양이다.
각 조각 설명의 첫 줄에는 두 정수 R, C가 주어지고, 다음 R개의 줄에는 각 칸을 나타내는 문자가 C개씩 주어진다. 각 문자는 색을 나타내는 소문자 알파벳이거나 빈 칸을 나타내는 .이다. 원래 소 장식품 설명에서는 3≤R,C≤500이고, 바닥에 떨어진 조각 설명에서는 1≤R,C≤100이다. 각 조각은 상하좌우로 이어져 있고, 비어 있지 않은 칸이 적어도 하나 있다.
원래 소 장식품을 다시 만들 수 있는 조각 i, j, k (i<j<k)의 조합의 개수를 출력한다.
예제에서 가능한 조합은 세 가지이고, 각각 조각 0, 1, 2와 조각 0, 2, 4, 그리고 조각 1, 3, 4를 쓴다. 조각 번호는 0부터 센다.