그리드 게임

각 세포는 자신이나 상하좌우 이웃이 살아 있으면 다음 초에 살아난다. 이 확장을 K초 반복한 뒤 살아 있는 세포 수를 센다.

보통6시뮬레이션BFS행렬구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

무한히 넓은 그리드가 단위 정사각형 칸으로 나누어져 있다. 각 칸은 살아있거나 죽어있다.

매초 모든 칸의 상태가 다음 규칙에 따라 동시에 바뀐다.

  • CC 자신과 CC에 변을 맞댄 네 칸, 이 다섯 칸 중 하나라도 살아있으면 1초 뒤 CC는 살아있다.
  • 그렇지 않으면 1초 뒤 CC는 죽어있다.

처음 그리드의 상태가 주어졌을 때, KK초가 지난 뒤 살아있는 칸이 모두 몇 개인지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 처음 상태가 주어지는 직사각형 영역의 행의 개수 NN과 열의 개수 MM이 주어진다. (1N,M501 \le N, M \le 50)

둘째 줄부터 NN개의 줄에 이 영역의 처음 상태가 한 줄에 MM글자씩 주어진다. 살아있는 칸은 o, 죽어있는 칸은 .이다. 영역 밖의 칸은 처음에 모두 죽어있다.

마지막 줄에 KK가 주어진다. (1K15001 \le K \le 1500)

출력

첫째 줄에 KK초가 지난 뒤 살아있는 칸의 개수를 출력한다.

힌트

처음 상태가 아래와 같고 K=3K = 3인 경우를 보자.

oo
o.

3초가 지난 뒤의 모습은 아래와 같다.

...oo...
..oooo..
.oooooo.
oooooooo
ooooooo.
.ooooo..
..ooo...
...o....