20251128
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int N, M;
int dy[8] = {0, 0, -1, 1};
int dx[8] = {-1, 1, 0, 0};
int matrix[1000][1000];
int ans = 0;
void dfs(int y, int x, int prev, int d) {
int k;
int ny, nx;
int c;
for (k = 0; k < 4; k ++) {
ny, nx = y + dy[k], x + dx[k];
if (0 <= ny && ny < N && 0 <= nx && nx < M) {
if (abs(matrix[ny][nx] - prev) == 1) {
c = matrix[ny][nx];
matrix[ny][nx] = -1;
if (ny == N - 1 && nx == M - 1) {
printf("%d", d + 1);
return;
}
dfs(ny, nx, c, d + 1);
}
}
}
}
int main() {
scanf("%d %d", &N, &M);
int i, j;
for (i = 0; i < N; i ++) {
for (j = 0; j < M; j ++) {
scanf("%d", &matrix[i][j]);
}
}
dfs(0, 0, matrix[0][0], 0);
return 0;
}




