#include <bits/stdc++.h>
#define endl cout<<"\n";
#define fi first
#define int long long
#define se second
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define op freopen
#define TXT "test"
#define freo if(fopen(TXT".inp","r")){op(TXT".inp","r",stdin);op(TXT".out","w",stdout);}
using namespace std;
int n,m,d1[1005][1005],d2[1005][1005];
bool vs1[1005][1005],vs2[1005][1005];
bool x[1005][1005];
vector<pair<int,int>> a[1005][1005];
void bfs(pair<int,int> i, int d[1005][1005] , bool vs[1005][1005] )
{
queue<pair<int,int>> q;
pair<int,int> c;
q.push(i);
vs[i.fi][i.se]=1;
while(!q.empty())
{
c=q.front();
q.pop();
for(pair<int,int> &j:a[c.fi][c.se])
{
if(!vs[j.fi][j.se])
{
d[j.fi][j.se]=d[c.fi][c.se]+1;
vs[j.fi][j.se]=1;
q.push(j);
}
}
}
}
main()
{
ios;
freo;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>x[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(!x[i][j]&&!x[i][j+1])
{
a[i][j].push_back({i,j+1});
a[i][j+1].push_back({i,j});
}
if(!x[i][j]&&!x[i+1][j])
{
a[i][j].push_back({i+1,j});
a[i+1][j].push_back({i,j});
}
if(!x[i][j]&&!x[i][j-1])
{
a[i][j].push_back({i,j-1});
a[i][j-1].push_back({i,j});
}
if(!x[i][j]&&!x[i-1][j])
{
a[i][j].push_back({i-1,j});
a[i-1][j].push_back({i,j});
}
}
}
bfs({1,1},d1,vs1);
bfs({n,m},d2,vs2);
int MIN=INT_MAX;
bool OK=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(vs1[i][j]&&vs2[i][j]&&d1[i][j]==d2[i][j])
{
MIN=min(MIN,d1[i][j]);
OK=1;
}
}
}
if(!OK)
cout<<"#";
else
cout<<MIN;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZW5kbCBjb3V0PDwiXG4iOwojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGlvcyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiNkZWZpbmUgb3AgZnJlb3BlbgojZGVmaW5lIFRYVCAidGVzdCIKI2RlZmluZSBmcmVvIGlmKGZvcGVuKFRYVCIuaW5wIiwiciIpKXtvcChUWFQiLmlucCIsInIiLHN0ZGluKTtvcChUWFQiLm91dCIsInciLHN0ZG91dCk7fQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sbSxkMVsxMDA1XVsxMDA1XSxkMlsxMDA1XVsxMDA1XTsKYm9vbCB2czFbMTAwNV1bMTAwNV0sdnMyWzEwMDVdWzEwMDVdOwpib29sIHhbMTAwNV1bMTAwNV07CnZlY3RvcjxwYWlyPGludCxpbnQ+PiBhWzEwMDVdWzEwMDVdOwp2b2lkIGJmcyhwYWlyPGludCxpbnQ+IGksIGludCBkWzEwMDVdWzEwMDVdICwgYm9vbCB2c1sxMDA1XVsxMDA1XSApCnsKICAgIHF1ZXVlPHBhaXI8aW50LGludD4+IHE7CiAgICBwYWlyPGludCxpbnQ+IGM7CiAgICBxLnB1c2goaSk7CiAgICB2c1tpLmZpXVtpLnNlXT0xOwogICAgd2hpbGUoIXEuZW1wdHkoKSkKICAgIHsKICAgICAgICBjPXEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvcihwYWlyPGludCxpbnQ+ICZqOmFbYy5maV1bYy5zZV0pCiAgICAgICAgewogICAgICAgICAgICBpZighdnNbai5maV1bai5zZV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRbai5maV1bai5zZV09ZFtjLmZpXVtjLnNlXSsxOwogICAgICAgICAgICAgICAgdnNbai5maV1bai5zZV09MTsKICAgICAgICAgICAgICAgIHEucHVzaChqKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQptYWluKCkKewogICAgaW9zOwogICAgZnJlbzsKICAgIGNpbj4+bj4+bTsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGZvcihpbnQgaj0xO2o8PW07aisrKQogICAgICAgIHsKICAgICAgICAgICAgY2luPj54W2ldW2pdOwogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGZvcihpbnQgaj0xO2o8PW07aisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoIXhbaV1bal0mJiF4W2ldW2orMV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFbaV1bal0ucHVzaF9iYWNrKHtpLGorMX0pOwogICAgICAgICAgICAgICAgYVtpXVtqKzFdLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIXhbaV1bal0mJiF4W2krMV1bal0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFbaV1bal0ucHVzaF9iYWNrKHtpKzEsan0pOwogICAgICAgICAgICAgICAgYVtpKzFdW2pdLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIXhbaV1bal0mJiF4W2ldW2otMV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFbaV1bal0ucHVzaF9iYWNrKHtpLGotMX0pOwogICAgICAgICAgICAgICAgYVtpXVtqLTFdLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIXhbaV1bal0mJiF4W2ktMV1bal0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFbaV1bal0ucHVzaF9iYWNrKHtpLTEsan0pOwogICAgICAgICAgICAgICAgYVtpLTFdW2pdLnB1c2hfYmFjayh7aSxqfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBiZnMoezEsMX0sZDEsdnMxKTsKICAgIGJmcyh7bixtfSxkMix2czIpOwogICAgaW50IE1JTj1JTlRfTUFYOwogICAgYm9vbCBPSz0wOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBqPTE7ajw9bTtqKyspCiAgICAgICAgewogICAgICAgICAgICBpZih2czFbaV1bal0mJnZzMltpXVtqXSYmZDFbaV1bal09PWQyW2ldW2pdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBNSU49bWluKE1JTixkMVtpXVtqXSk7CiAgICAgICAgICAgICAgICBPSz0xOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYoIU9LKQogICAgICAgIGNvdXQ8PCIjIjsKICAgIGVsc2UKICAgICAgICBjb3V0PDxNSU47Cn0K