import Queue W,H=map(int,raw_input().split()) M= [map(int,raw_input().split()) for i in range(H)] record=[[[-1 for i in range(10)] for j in range(W)] for k in range(H)] for i in range(10): record[0][0][i]=0 q=Queue.Queue() record[1][0][M[0][0]]=1 q.put((1,0,M[0][0])) record[0][1][M[0][0]]=1 q.put((0,1,M[0][0])) d=[(1,0),(-1,0),(0,1),(0,-1)] while not q.empty(): i,j,prev=q.get() #print i,j,prev,record[i][j][prev] for dx,dy in d: if i+dx>=0 and i+dx = 0 and j+dy 0: record[i+dx][j+dy][M[i][j]]=record[i][j][prev]+1 q.put((i+dx,j+dy,M[i][j])) if i+dx+1==H and j+dy+1==W: print record[i+dx][j+dy][M[i][j]] exit() print -1