잠든 카멜레온
시간 제한1초메모리 제한1024 MB
1번 카멜레온에서 N번 카멜레온을 깨우는 데 걸리는 최소 시간을 구합니다. 같은 색끼리는 혀를 뻗을 수 없고, 한 칸 이동은 1초입니다.
문제
카멜레온 마을에는 마리의 카멜레온이 살고 있으며, 이 마을은 2차원 평면으로 볼 수 있다. 번째 카멜레온은 위치에 있고, 색깔은 이다.
밤이 깊었을 때 깨어 있는 것은 첫 번째 카멜레온뿐이고, 나머지 카멜레온은 모두 잠들어 있다.
갑자기 번째 카멜레온에게 급한 일이 생겨서 깨워야 한다. 카멜레온을 깨우려면 몸이 직접 닿아야 한다. 따라서 다른 카멜레온이 그 위치까지 걸어가거나 혀를 뻗어 닿아야 한다.
카멜레온은 상하좌우와 대각선의 여덟 방향으로 움직일 수 있다. 구체적으로 에 있는 카멜레온은 1초 만에 , , , , , , , , 중 한 곳으로 이동할 수 있다.
또한 카멜레온은 혀를 세로나 가로 방향으로 뻗을 수 있다. 즉 에 있는 카멜레온은 임의의 정수 에 대해 또는 에 혀를 닿게 할 수 있다. 혀를 뻗는 데는 시간이 걸리지 않는다. 다만 같은 색깔의 카멜레온끼리는 서로를 알아보기 어려워 겨냥이 힘들기 때문에, 서로를 향해 혀를 뻗을 수 없다. 혀를 뻗을 때 경로에 다른 카멜레온이 있어도 상관없다. 혀의 목적지에 있는 카멜레온만 깨어나고, 경로에 있던 다른 카멜레온은 깨지 않는다.
카멜레온은 졸음이 많아서, 다른 카멜레온을 깨운 직후 현재 자리에서 바로 다시 잠든다.
번째 카멜레온을 깨우는 데 걸리는 최소 시간(초)을 구하시오.
입력
첫째 줄에 카멜레온의 수 과 색깔의 수 이 공백으로 구분되어 주어진다.
둘째 줄부터 번째 줄까지 번째 줄에는 번째 카멜레온의 초기 위치 , 와 색깔 가 공백으로 구분되어 주어진다.
출력
번째 카멜레온을 깨우는 데 걸리는 최소 시간(초)을 출력한다.
제한
- 이면 또는 이다.
- 각 에 대해 를 만족하는 이 존재한다.
- 입력의 모든 값은 정수이다.