성공

N×M 격자에서 왼쪽 위에서 오른쪽 아래로 이동할 수 있도록 D×D 폭파를 최소 몇 번 해야 하는지 구한다.

어려움8BFS이분 탐색누적 합아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

당연한 이야기지만, 성공으로 가는 길이 항상 평탄하지만은 않다. 온갖 장애물이 가득하고, 장애물에 막혀서 주저앉을 수도 있다. 그래서 그 장애물을 폭파하려고 한다.

성공으로 가는 길은 N×M격자 위에 놓여 있다. 성공으로 가려면 맨 왼쪽 위 칸에서 시작하여 장애물이 없는 상하좌우로 인접한 칸을 밟으면서 맨 오른쪽 아래 칸에 도착해야 한다. 한 번의 폭파 작업으로 D×D 격자 내에 있는 모든 장애물을 없앨 수 있다. 하지만 세상에 공짜는 없는 법. 폭파 작업에도 큰 힘이 들기 때문에, 성공으로 가려면 최소 몇 번의 폭파 작업이 필요한지 알고 싶다.

입력

첫 번째 줄에 격자의 행의 개수 N, 열의 개수 M, 폭파의 범위 D가 주어진다(D ≤ N, M ≤ 500, 1 ≤ D ≤ 100).

그 다음 N개의 줄에 격자의 각 행을 나타내는 길이 M의 문자열이 주어진다. “.”은 장애물이 없는 칸, “#”은 장애물이 있는 칸이다. 출발 지점과 성공에는 장애물이 없다.

출력

첫 번째 줄에 폭파 작업의 최소 횟수를 출력한다.

힌트