#include<bits/stdc++.h>
using namespace std;
int n,m;
int arr[101][101];
int visit[101][101]={0,};
int dx[4]={1,-1,0,0}, dy[4]={0,0,1,-1};
queue<pair<int,int>>q;
int bfs(int i, int j){
q.push({i,j});
visit[i][j]=1;
while(!q.empty()){
int x=q.front().first;
int y=q.front().second;
q.pop();
if(x==n && y==m)
return visit[x][y];
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1 && nx<=n && ny>=1 && ny<=m && arr[nx][ny]==1 && visit[nx][ny]==0){
visit[nx][ny]=visit[x][y]+1;
q.push({nx,ny});
}
}
}
}
int main() {
string str;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>str;
for(int j=1;j<=m;j++){
arr[i][j]=str[j-1]-'0';
}
}
cout<<bfs(1,1);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbixtOwppbnQgYXJyWzEwMV1bMTAxXTsKaW50IHZpc2l0WzEwMV1bMTAxXT17MCx9OwppbnQgZHhbNF09ezEsLTEsMCwwfSwgZHlbNF09ezAsMCwxLC0xfTsKcXVldWU8cGFpcjxpbnQsaW50Pj5xOwoKaW50IGJmcyhpbnQgaSwgaW50IGopewoJcS5wdXNoKHtpLGp9KTsKCXZpc2l0W2ldW2pdPTE7CgkKCXdoaWxlKCFxLmVtcHR5KCkpewoJCWludCB4PXEuZnJvbnQoKS5maXJzdDsKCQlpbnQgeT1xLmZyb250KCkuc2Vjb25kOwoJCXEucG9wKCk7CgkJCgkJaWYoeD09biAmJiB5PT1tKQoJCQlyZXR1cm4gdmlzaXRbeF1beV07CgkJCgkJZm9yKGludCBpPTA7aTw0O2krKyl7CgkJCWludCBueD14K2R4W2ldOwoJCQlpbnQgbnk9eStkeVtpXTsKCQkJCgkJCWlmKG54Pj0xICYmIG54PD1uICYmIG55Pj0xICYmIG55PD1tICYmIGFycltueF1bbnldPT0xICYmIHZpc2l0W254XVtueV09PTApewoJCQkJdmlzaXRbbnhdW255XT12aXNpdFt4XVt5XSsxOwoJCQkJcS5wdXNoKHtueCxueX0pOwoJCQl9CgkJfQoJfQp9CgppbnQgbWFpbigpIHsKCXN0cmluZyBzdHI7CgkKCWNpbj4+bj4+bTsKCQoJZm9yKGludCBpPTE7aTw9bjtpKyspewoJCWNpbj4+c3RyOwoJCQoJCWZvcihpbnQgaj0xO2o8PW07aisrKXsKCQkJYXJyW2ldW2pdPXN0cltqLTFdLScwJzsKCQl9Cgl9CgkKCWNvdXQ8PGJmcygxLDEpOwoJCglyZXR1cm4gMDsKfQ==