#include "bits/stdc++.h"
using namespace std;
long long x,y,minn=1145141919810;
bool lj[105][105]; // 走过的路
char l[105][105]; // 地图
bool flag; // 是否走到终点
void z(long long o,long long p,long long xl,long long sj){
if (xl == 0) return ;
if (o == x&&p == y){
minn = min (minn,sj);
flag=1;
return ;
}
if (o > x||o <= 0) return ;
if (p > y||p <= 0) return ;
if (lj[o][p]) return ;
if (l[o][p] == '0') return ;
if (l[o][p] == '4') xl=6;
lj[o][p] = true;
z (o-1,p,xl-1,sj+1);
z (o+1,p,xl-1,sj+1);
z (o,p-1,xl-1,sj+1);
z (o,p+1,xl-1,sj+1);
}
int main(){
cin >> x >> y;
for (int i = 1;i <= x;i ++){
for (int j = 1;j <= y;j ++){
cin >> l[i][j];
}
}
z (1,1,6,0);
if (flag) cout << minn;
else cout << -1;
return 0;
}