만들어진 신

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

당신은 우주를 만드는 신이다. 실리콘 결정을 배치하던 중 문제가 생겼다. 알루미늄 불순물이 실리콘의 전자를 빼앗아 갔고, 결정들이 원래의 전자를 돌려달라고 아우성친다. 다행히 문제를 일찍 발견해 결정은 아직 작다. 신이라도 시간이 넉넉하지 않으니, 가장 적은 이동 횟수로 모든 전자를 제자리에 돌려놓아야 한다.

전자를 옮기는 방법은 하나뿐이다. 전자가 있는 원자에서, 전자가 없는 이웃 원자로 전자 하나를 옮긴다. 즉 빈자리로 이웃한 전자를 밀어 넣는 것이며, 한 번의 이동이란 이런 옮김 한 번을 뜻한다.

결정 격자는 평면 직사각형 격자로 생각한다. 각 원자는 상하좌우 4개의 이웃과 연결된다. 격자의 크기가 $h$행 $w$열일 때 원자의 개수는 $n = h \times w$이고, 원자에는 $0$부터 $n-1$까지 번호가 붙는다. $i$행 $j$열(행과 열은 $0$부터 센다)에 있는 원자의 번호는 $i \times w + j$이다.

전자에는 $1$부터 $n-1$까지 번호가 붙어 있고, 정확히 한 원자에는 전자가 없다(격자에서 $0$으로 표시). 목표는 각 전자 $k$를 같은 번호의 원자 $k$로 옮기고, $0$번 원자는 전자가 없는 상태로 만드는 것이다. 이렇게 만들기 위한 최소 이동 횟수를 구하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수 $h$와 $w$가 주어진다 ($2 \le h, w \le 5$, $h \times w \le 10$). 이어지는 $h$개의 줄에는 각각 $w$개의 정수가 주어지며, 해당 격자 위치에 놓인 전자의 번호를 나타낸다. $0$은 전자가 없는 원자를 뜻한다.

한 줄에 0 0만 주어지면 입력이 끝난다.

출력

각 테스트 케이스마다, 모든 전자를 같은 번호의 원자로 되돌리는 데 필요한 최소 이동 횟수를 한 줄에 출력한다.

힌트