Osmosmjerka

글자 블록을 모든 방향으로 무한히 반복한 격자에서 시작 칸과 8방향 중 하나를 무작위로 골라 길이 K인 단어를 두 번 읽을 때, 두 단어가 같을 확률을 기약분수로 구한다.

어려움8수학문자열 매칭해시맵조합론아직 제출이 없습니다시간 제한4초메모리 제한256 MB

문제

MMNN열 크기의 문자 블록을 사방으로 무한히 이어 붙이면 팔방 낱말 찾기 판이 된다. 예를 들어 블록이 다음과 같다면

honi
hsin

판은 이렇게 만들어지고, 위아래로도 좌우로도 끝없이 이어진다.

...honihonihonihoni...
...hsinhsinhsinhsin...
...honihonihonihoni...
...hsinhsinhsinhsin...

이 판에서 칸 하나와 여덟 방향 중 하나를 무작위로 고른다. 고른 칸에서 출발해 고른 방향으로 한 칸씩 나아가며 글자 KK개를 읽으면 길이 KK인 단어를 얻는다. 판은 블록 하나를 반복한 것이라 판의 모든 칸이 블록의 어느 한 칸과 같으므로, 시작 칸을 고르는 것은 블록의 M×NM \times N개 칸에서 하나를 균등하게 뽑는 것과 같다. 방향도 여덟 가지에서 균등하게 뽑는다.

이 시행을 서로 독립으로 두 번 했을 때 얻은 단어 두 개가 같을 확률을 구하시오.

입력

첫째 줄에 정수 MM, NN, KK가 주어진다. (1M,N5001 \le M, N \le 500, 2K1092 \le K \le 10^9)

다음 MM개 줄에는 각각 영어 소문자 NN개가 주어지며, 블록의 한 행을 나타낸다. 블록에는 서로 다른 글자가 적어도 두 개 있다.

출력

확률을 기약분수 p/q 꼴로 공백 없이 출력한다.