알파벳 여행
면접 대비시간 제한2초메모리 제한256 MB
문자 격자에서 길이가 L인 모든 이동 경로를 세고 a, c, m이 들어간 단어를 제외한 서로 다른 문자열 개수를 구합니다.
문제
행 열 격자의 각 칸에 소문자 알파벳이 하나씩 적혀 있다. 아무 칸에서나 출발해 상하좌우로 인접한 칸으로 번 이동하면 단어 하나가 만들어진다. 지나간 칸의 글자를 방문 순서대로 이어 붙인 문자열이 그 단어이고, 길이는 이다.
이동 규칙은 두 가지다. 격자 밖으로는 나갈 수 없다. 이미 지나온 칸으로 다시 들어가도 되고, 직전 칸으로 되돌아가는 이동도 허용한다. 이 1이면 이동이 없으므로 칸 하나의 글자가 곧 단어다.
가능한 모든 출발 칸과 모든 이동 방법으로 단어를 전부 만든다. 다만 a, c, m 세 글자는 금지 글자다. 금지 글자를 하나라도 포함하는 단어는 버린다. 예를 들어 ici, ahi, mrk는 모두 버린다.
버리고 남은 단어가 몇 개인지, 그중 서로 다른 문자열이 몇 개인지 구하라. 출발 칸이나 이동 경로가 다르면 같은 문자열이라도 각각 한 개로 세지만, 서로 다른 단어의 개수를 셀 때는 같은 문자열을 한 번만 센다.
입력
첫 줄에 격자의 행 수 , 열 수 , 단어의 길이 이 공백으로 구분되어 주어진다. (, , )
이어지는 개의 줄에 격자가 한 줄에 한 행씩 주어진다. 각 줄은 공백 없이 개의 소문자로 이루어진다.
출력
첫 줄에 만들어진 길이 짜리 단어의 개수를 출력한다. 둘째 줄에 그중 서로 다른 단어의 개수를 출력한다.