import java.util.*; public class main { public static class Pair { public int x, y; public Pair(int x, int y){ this.x = x; this.y = y; } } public static int n, m; public static boolean is_valid(long x, long y){ return x < n && y < m && x >= 0 && y >= 0; } public static void main( String[] args ){ Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); m = scanner.nextInt(); long [][] a = new long[n][m]; for(int i = 0 ; i < n ; i++) for(int j = 0 ; j < m ; j++) a[i][j] = scanner.nextInt(); LinkedList q = new LinkedList(); q.push(new Pair(0, 0)); long [][] d = new long [n][m]; Pair v; boolean [][] ok = new boolean[n][m]; for(int i = 0 ; i < n ; i++) for(int j = 0 ; j < m ;j++) ok[i][j] = false; int x, y; d[0][0] = 0; ok[0][0] = true; int [][] adj = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}}; while(!q.isEmpty()){ v = q.pop(); x = v.x; y = v.y; ok[x][y] = true; for(int i = 0 ; i < 4 ; i++){ if(!is_valid(x + adj[i][0], y + adj[i][1])) continue; if(a[x+adj[i][0]][y+adj[i][1]] == 1) continue; if(ok[x+adj[i][0]][y+adj[i][1]]) continue; d[x+adj[i][0]][y+adj[i][1]] = 1 + d[x][y]; q.push(new Pair((x+adj[i][0]), (y+adj[i][1]))); } } for(int i = 0 ; i < n ;i++) for(int j = 0 ; j < m ; j++) if(a[i][j] == 9) System.out.println(d[i][j]); } }