from collections import deque
n,m = map(int,input().split())
g = [input().split() for _ in range(n)]
def bfs(g):
global n,m
st = [[False for _ in range(m)] for i in range(n)]
q = deque([(0,0)])
step = 0
st[0][0] = True
while q:
size = len(q)
for _ in range(size):
i,j = q.popleft()
if i == n - 1 and j == m - 1:
return step
for dx,dy in [[1,0],[-1,0],[0,-1],[0,1]]:
x,y = dx + i,dy + j
if x == n or y == m or x<0 or y<0 or st[x][y] or g[x][y] == '1':
continue
st[x][y] = True
q.append([x,y])
step += 1
return -1
print(bfs(g))