Farmer John は家をもっと飾ることにしました。陶器店で繊細なガラスの牛の置物を見つけ、暖炉の上の棚にぴったりだと購入を決めました。
形は次のような $N \times M$ の文字格子で表します($3 \leq N, M \leq 500$)。小文字は色の異なる置物の部分を表し、. は置物に含まれないマスです。
............... ............... x..x........... xxxx........... xxxxaaaaaaa... .xx.aaaaaaaaa.. ....aaaaaaa.aa. ....ll...ll.... ....vv...vv.... ...............
購入直前、雄牛が店を駆け抜け、置物だけでなく棚の他のガラス製品も壊しました!置物は 3 片に割れ、床の合計 $K$ 片に紛れました($4 \leq K \leq 100$)。各 $K$ 片も元の置物と同様に文字格子で表します。
床の $K$ 片から 3 片を選び、貼り合わせて元の置物に戻せる組数を求めてください。
破片は上下・左右に反転したり、90 度の倍数だけ回転したりしています。元の格子と $K$ 片の格子から、平行移動、反転、90 度の倍数の回転を許して元の図を作れる 3 片の組を探します。重ねた 3 片は元の図と完全に一致し、元の各色付きマスはちょうど一片に含まれなければなりません。
入力
最初の行は整数 $K$ です。続いて $K + 1$ 個の図の記述があり、最初が元の置物、続く $K$ 個が破片です。
各記述は整数 $R$ と $C$ の行で始まります($1 \le R, C \le 100$)。続く $R$ 行には各 $C$ 個の小文字があり、各マスの色を表します。各破片は上下左右の隣接で連結し、少なくとも一つの空でないマスを持ちます。
出力
破片 $i$、$j$、$k$ で元の牛を作れる三つ組 $i, j, k$($i < j < k$)の数を出力してください。
入出力例
入力 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
注記
三つの解は破片 $(0, 1, 2)$、$(0, 2, 4)$、$(1, 3, 4)$ を使います。
各テストケースの制限時間は 6 秒です。Java と Python の提出ではその二倍です。
問題作成:Brian Dean