/*
'########:::::'###::::'##::: ##::'######::::'######:::'#######::'########::'########:'########::
##.... ##:::'## ##::: ###:: ##:'##... ##::'##... ##:'##.... ##: ##.... ##: ##.....:: ##.... ##:
##:::: ##::'##:. ##:: ####: ##: ##:::..::: ##:::..:: ##:::: ##: ##:::: ##: ##::::::: ##:::: ##:
##:::: ##:'##:::. ##: ## ## ##: ##::'####: ##::::::: ##:::: ##: ##:::: ##: ######::: ########::
##:::: ##: #########: ##. ####: ##::: ##:: ##::::::: ##:::: ##: ##:::: ##: ##...:::: ##.. ##:::
##:::: ##: ##.... ##: ##:. ###: ##::: ##:: ##::: ##: ##:::: ##: ##:::: ##: ##::::::: ##::. ##::
########:: ##:::: ##: ##::. ##:. ######:::. ######::. #######:: ########:: ########: ##:::. ##:
........:::..:::::..::..::::..:::......:::::......::::.......:::........:::........::..:::::..::
*/
#include<bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const long long linf = 1e18;
int n, m;
int a[1005][1005];
map<tuple<int, int, int>, bool> vis;
using idk = tuple<int,int,int,int>;
void solve()
{
queue<idk> q;
q.push({0, 1, 1, 0});
vis[{1, 1, 0}] = true;
while(!q.empty())
{
auto [d, r, c, mask] = q.front();
q.pop();
if(r == n && m == c)
{
cout << d;
return;
}
for(int i = 0; i < 8; i++)
{
if((mask >> i) & 1) continue;
int r2 = r + (i == 0 || i == 1 || i == 7 ? a[r][c] : (i == 2 || i == 6 ? 0 : -a[r][c]));
int c2 = c + (i == 1 || i == 2 || i == 3 ? a[r][c] : (i == 0 || i == 4 ? 0 : -a[r][c]));
if(r2 < 1 || r2 > n || c2 < 1 || c2 > m) continue;
int mask2 = mask | (1 << i);
if(!vis[{r2, c2, mask2}])
{
vis[{r2, c2, mask2}] = true;
q.push({d + 1, r2, c2, mask2});
}
}
}
cout << -1;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
if(fopen(".INP", "r")) {
freopen(".INP", "r", stdin);
freopen(".OUT", "w", stdout);
}
cin >> m >> n;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
cin >> a[i][j];
}
}
solve();
return 0;
}
LyoKJyMjIyMjIyMjOjo6OjonIyMjOjo6OicjIzo6OiAjIzo6JyMjIyMjIzo6OjonIyMjIyMjOjo6JyMjIyMjIyM6OicjIyMjIyMjIzo6JyMjIyMjIyMjOicjIyMjIyMjIzo6CiAjIy4uLi4gIyM6OjonIyMgIyM6OjogIyMjOjogIyM6JyMjLi4uICMjOjonIyMuLi4gIyM6JyMjLi4uLiAjIzogIyMuLi4uICMjOiAjIy4uLi4uOjogIyMuLi4uICMjOgogIyM6Ojo6ICMjOjonIyM6LiAjIzo6ICMjIyM6ICMjOiAjIzo6Oi4uOjo6ICMjOjo6Li46OiAjIzo6OjogIyM6ICMjOjo6OiAjIzogIyM6Ojo6Ojo6ICMjOjo6OiAjIzoKICMjOjo6OiAjIzonIyM6OjouICMjOiAjIyAjIyAjIzogIyM6OicjIyMjOiAjIzo6Ojo6OjogIyM6Ojo6ICMjOiAjIzo6OjogIyM6ICMjIyMjIzo6OiAjIyMjIyMjIzo6CiAjIzo6OjogIyM6ICMjIyMjIyMjIzogIyMuICMjIyM6ICMjOjo6ICMjOjogIyM6Ojo6Ojo6ICMjOjo6OiAjIzogIyM6Ojo6ICMjOiAjIy4uLjo6OjogIyMuLiAjIzo6OgogIyM6Ojo6ICMjOiAjIy4uLi4gIyM6ICMjOi4gIyMjOiAjIzo6OiAjIzo6ICMjOjo6ICMjOiAjIzo6OjogIyM6ICMjOjo6OiAjIzogIyM6Ojo6Ojo6ICMjOjouICMjOjoKICMjIyMjIyMjOjogIyM6Ojo6ICMjOiAjIzo6LiAjIzouICMjIyMjIzo6Oi4gIyMjIyMjOjouICMjIyMjIyM6OiAjIyMjIyMjIzo6ICMjIyMjIyMjOiAjIzo6Oi4gIyM6Ci4uLi4uLi4uOjo6Li46Ojo6Oi4uOjouLjo6OjouLjo6Oi4uLi4uLjo6Ojo6Li4uLi4uOjo6Oi4uLi4uLi46OjouLi4uLi4uLjo6Oi4uLi4uLi4uOjouLjo6Ojo6Li46OgoqLwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgaW5mID0gMWU5Owpjb25zdCBsb25nIGxvbmcgbGluZiA9IDFlMTg7CmludCBuLCBtOwppbnQgYVsxMDA1XVsxMDA1XTsKbWFwPHR1cGxlPGludCwgaW50LCBpbnQ+LCBib29sPiB2aXM7CnVzaW5nIGlkayA9IHR1cGxlPGludCxpbnQsaW50LGludD47Cgp2b2lkIHNvbHZlKCkKewoJcXVldWU8aWRrPiBxOwoJcS5wdXNoKHswLCAxLCAxLCAwfSk7Cgl2aXNbezEsIDEsIDB9XSA9IHRydWU7Cgl3aGlsZSghcS5lbXB0eSgpKQoJewoJCWF1dG8gW2QsIHIsIGMsIG1hc2tdID0gcS5mcm9udCgpOwoJCXEucG9wKCk7CgkJaWYociA9PSBuICYmIG0gPT0gYykKCQl7CgkJCWNvdXQgPDwgZDsKCQkJcmV0dXJuOwoJCX0KCQlmb3IoaW50IGkgPSAwOyBpIDwgODsgaSsrKQoJCXsKCQkJaWYoKG1hc2sgPj4gaSkgJiAxKSBjb250aW51ZTsKCQkJaW50IHIyID0gciArIChpID09IDAgfHwgaSA9PSAxIHx8IGkgPT0gNyA/IGFbcl1bY10gOiAoaSA9PSAyIHx8IGkgPT0gNiA/IDAgOiAtYVtyXVtjXSkpOwoJCQlpbnQgYzIgPSBjICsgKGkgPT0gMSB8fCBpID09IDIgfHwgaSA9PSAzID8gYVtyXVtjXSA6IChpID09IDAgfHwgaSA9PSA0ID8gMCA6IC1hW3JdW2NdKSk7CgkJCWlmKHIyIDwgMSB8fCByMiA+IG4gfHwgYzIgPCAxIHx8IGMyID4gbSkgY29udGludWU7CgkJCWludCBtYXNrMiA9IG1hc2sgfCAoMSA8PCBpKTsKCQkJaWYoIXZpc1t7cjIsIGMyLCBtYXNrMn1dKQoJCQl7CgkJCQl2aXNbe3IyLCBjMiwgbWFzazJ9XSA9IHRydWU7CgkJCQlxLnB1c2goe2QgKyAxLCByMiwgYzIsIG1hc2syfSk7CgkJCX0KCQl9Cgl9Cgljb3V0IDw8IC0xOwp9CgppbnQgbWFpbigpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZSgwKTsgY291dC50aWUoMCk7CglpZihmb3BlbigiLklOUCIsICJyIikpIHsKCQlmcmVvcGVuKCIuSU5QIiwgInIiLCBzdGRpbik7CgkJZnJlb3BlbigiLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKCX0KCWNpbiA+PiBtID4+IG47Cglmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKCXsKCQlmb3IoaW50IGogPSAxOyBqIDw9IG07IGorKykKCQl7CgkJCWNpbiA+PiBhW2ldW2pdOwoJCX0KCX0KCXNvbHZlKCk7CglyZXR1cm4gMDsKfQo=