문제
민용이는 집을 꾸미기 위해 유리 공방을 방문했다. 그곳에서 민용이는 벽난로 선반 위에 두면 딱 어울릴 것 같은 정교한 유리 소 조각상을 발견하고 구입하기로 했다.
조각상의 모양은 아래와 같이 크기의 격자로 표현된다. () 격자에서 소문자 알파벳은 조각상의 일부분을 나타내며(서로 다른 문자는 서로 다른 색깔을 의미한다), .은 빈 공간을 나타낸다.
...............
...............
x..x...........
xxxx...........
xxxxaaaaaaa...
.xx.aaaaaaaaa..
....aaaaaaa.aa.
....ll...ll....
....vv...vv....
...............
불행히도 민용이가 조각상을 사기도 전에, 갑자기 날뛰는 황소가 공방을 엉망으로 만들면서 민용이가 찜해둔 조각상뿐만 아니라 선반 위의 다른 유리 물건들까지 모두 깨버리고 말았다! 민용이의 조각상은 3개의 조각으로 깨졌고, 이 파편들은 바닥에 떨어진 총 개의 조각들 사이에 섞여 버렸다. () 각 조각은 원래 조각상과 마찬가지로 격자 형태로 표현된다.
바닥에 흩어진 개의 조각 중 3개를 골라 원래의 조각상을 복원할 수 있는 조합이 총 몇 가지인지 구하시오.
바닥의 조각들은 평행 이동, 상하 또는 좌우 뒤집기, 혹은 의 배수만큼 회전되어 있을 수 있다. 따라서 원래 조각상의 격자와 개의 조각 정보가 주어졌을 때, 3개의 조각을 적절히 이동, 회전, 뒤집어 합쳐서 원래 조각상을 완벽히 만들 수 있는 세 조각의 조합을 찾아야 한다. 조각들을 겹쳐 놓았을 때, 원래 조각상의 각 색깔 칸은 3개의 조각 중 정확히 하나의 조각에 있는 색깔 칸과 일치해야 하며, 원래 조각상의 빈 공간에 색깔 칸이 놓여서는 안 된다.
입력
첫째 줄에 정수 가 주어진다. () 이어서 개의 조각 정보가 주어진다. 첫 번째 정보는 원래 유리 조각상의 모양이고, 이후 개의 정보는 바닥에 떨어진 조각들의 모양이다.
각 정보의 첫 줄에는 격자의 행 수 과 열 수 가 공백으로 구분되어 주어진다. () 이어서 개의 줄에 걸쳐 개의 소문자 알파벳 또는 .이 주어진다. 각 조각은 상하좌우로 연결되어 있으며, 최소 하나 이상의 색깔 칸을 포함한다.
출력
원래 유리 조각상을 복원할 수 있는 조각의 삼조 ()의 개수를 출력한다.
예제 입력 1
5
5 5
aaaaa
..a..
bbabb
..a..
aaaaa
3 5
..abb
..a..
aaaaa
5 2
a.
a.
aa
a.
a.
1 2
bb
1 5
bbabb
2 5
aaaaa
..a..
예제 출력 1
3
코드를 제출하려면 로그인이 필요합니다.
로그인