#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ul unsigned long long
ll mod = 1e9+7;
const int N = 1e3+5;
int MOD = 998244353;
int bit[200000];
int n, m;
//vector<int> adj[N];
int a[N][N];
int d[N][N];
bool visit[N][N];
int sX[] = {0, 0, 1, -1};
int sY[] = {1, -1, 0, 0};
void nhap(){
cin >> n >> m;
for(int i= 1 ; i <= n ; i++){
for(int j= 1; j <= m ; j++){
cin >> a[i][j];
}
}
}
void bfs(int sx, int sy) {
queue < pair <int, int> > q;
q.push({sx, sy});
visit[sx][sy] = true;
d[1][1]=1;
while (!q.empty()) {
int x = q.front().first;
int y = q.front().second;
q.pop();
for (int i = 0; i < 4; ++i) {
int u = x + sX[i];
int v = y + sY[i];
if (u > n || u < 1) continue;
if (v > m || v < 1) continue;
if (a[u][v] == 0 && !visit[u][v]) {
visit[u][v] = true;
q.push({u, v});
d[u][v] = d[x][y] + 1;
}
}
}
}
int main() {
//freopen("CSBN.INP", "r", stdin);
//freopen("CSBN.OUT", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
nhap();
if(a[1][1] == 1){
cout << -1;
return 0;
}
bfs(1,1);
cout << d[n][m];
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHVsIHVuc2lnbmVkIGxvbmcgbG9uZwoKbGwgbW9kID0gMWU5Kzc7CmNvbnN0IGludCBOID0gMWUzKzU7CmludCBNT0QgPSA5OTgyNDQzNTM7CmludCBiaXRbMjAwMDAwXTsKaW50IG4sIG07Ci8vdmVjdG9yPGludD4gYWRqW05dOwppbnQgYVtOXVtOXTsKaW50IGRbTl1bTl07CmJvb2wgdmlzaXRbTl1bTl07CmludCBzWFtdID0gezAsIDAsIDEsIC0xfTsKaW50IHNZW10gPSB7MSwgLTEsIDAsIDB9OwoKdm9pZCBuaGFwKCl7CgljaW4gPj4gbiA+PiBtOwoJZm9yKGludCBpPSAxIDsgaSA8PSBuIDsgIGkrKyl7CgkJZm9yKGludCBqPSAxOyBqIDw9IG0gOyBqKyspewoJCQljaW4gPj4gYVtpXVtqXTsKCQl9Cgl9Cn0Kdm9pZCBiZnMoaW50IHN4LCBpbnQgc3kpIHsgCiAgICBxdWV1ZSA8IHBhaXIgPGludCwgaW50PiA+IHE7CiAgICBxLnB1c2goe3N4LCBzeX0pOwogICAgdmlzaXRbc3hdW3N5XSA9IHRydWU7CiAgICBkWzFdWzFdPTE7CiAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgIGludCB4ID0gcS5mcm9udCgpLmZpcnN0OwogICAgICAgIGludCB5ID0gcS5mcm9udCgpLnNlY29uZDsKICAgICAgICBxLnBvcCgpOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewogICAgICAgICAgICBpbnQgdSA9IHggKyBzWFtpXTsKICAgICAgICAgICAgaW50IHYgPSB5ICsgc1lbaV07CgogICAgICAgICAgICBpZiAodSA+IG4gfHwgdSA8IDEpIGNvbnRpbnVlOwogICAgICAgICAgICBpZiAodiA+IG0gfHwgdiA8IDEpIGNvbnRpbnVlOwoKICAgICAgICAgICAgaWYgKGFbdV1bdl0gPT0gMCAmJiAhdmlzaXRbdV1bdl0pIHsKICAgICAgICAgICAgICAgIHZpc2l0W3VdW3ZdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHEucHVzaCh7dSwgdn0pOwogICAgICAgICAgICAgICAgZFt1XVt2XSA9IGRbeF1beV0gKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmludCBtYWluKCkgewoJLy9mcmVvcGVuKCJDU0JOLklOUCIsICJyIiwgc3RkaW4pOwoJLy9mcmVvcGVuKCJDU0JOLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgljaW4udGllKDApOwoJY291dC50aWUoMCk7CgkKICAgIG5oYXAoKTsKICAgIGlmKGFbMV1bMV0gPT0gMSl7CiAgICAJY291dCA8PCAtMTsKICAgIAlyZXR1cm4gMDsKCX0KICAgIGJmcygxLDEpOwogICAgCgljb3V0IDw8IGRbbl1bbV07CgkKfQo=