#include <cstdio>
#include <queue>
#include <iostream>
using namespace std;
const int MAX = 110;
int map[MAX][MAX];
int dist[MAX][MAX];
int N,M;
int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,-1,1};
int main()
{
scanf("%d %d", &N, &M);
for(int i = 0; i < N; i++)
{
for(int j = 0; j < M; j++)
{
scanf("%1d", &map[i][j]);
}
}
/*
for(int i = 0; i < N; i++)
{
for(int j = 0; j < M; j++)
{
printf("%d", map[i][j]);
}
printf("\n");
}
*/
queue<pair<int, int>> Queue;
Queue.push(make_pair(0,0));
dist[0][0] = 1;
while(!Queue.empty())
{
int x = Queue.front().first;
int y = Queue.front().second;
Queue.pop();
for(int k = 0; k < 4; k++)
{
int nx = x + dx[k];
int ny = y + dy[k];
if(nx >= 0 && nx < N && ny >= 0 && ny < M)
{
if(map[nx][ny] == 1 && dist[nx][ny] == 0)
{
// printf("(%d,%d)\n",nx, ny);
dist[nx][ny] = dist[x][y] + 1;
Queue.push(make_pair(nx, ny));
}
}
}
}
printf("%d\n", dist[N-1][M-1]);
return 0;
}