새로 산 로봇 청소기가 방을 돌아다니는 모습을 한참 지켜본 끝에 다음 규칙을 알아냈다.
방금 카펫에 음료를 쏟았다. 로봇은 오물이 있는 칸에 들어서는 순간 그 자리를 치우고, 청소 자체에는 시간도 배터리도 들지 않는다. 로봇의 시작 위치와 오물의 위치가 주어질 때, 로봇이 오물에 닿기까지 몇 분이 걸리는지 구하라.
첫 줄에 테스트 케이스의 개수 T가 주어진다 (1≤T≤500).
각 테스트 케이스의 첫 줄에는 두 정수 n과 d가 공백을 사이에 두고 주어진다. 방은 한 변이 n인 n×n 격자이고, d는 가득 충전한 로봇이 움직일 수 있는 횟수다 (5≤n≤20, 15≤d≤30).
이어지는 n개의 줄에는 각각 n개의 문자가 주어진다.
| 문자 | 뜻 |
|---|---|
- | 빈 칸 |
x | 벽이나 의자 같은 장애물 |
m | 오물 |
r | 로봇의 시작 위치. 항상 오른쪽을 보고 배터리가 가득 차 있으며, 벽 안에서 시작하지 않는다. |
p | 콘센트 |
각 테스트 케이스에 r와 m은 정확히 하나씩 있다.
각 테스트 케이스마다 한 줄에 Case x: y 형식으로 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 로봇이 오물에 닿기까지 걸리는 시간을 분 단위로 나타낸 값이다. 로봇이 오물에 영영 닿지 못하면 y 자리에 NEVER를 출력한다.