#include <bits/stdc++.h>
#define ll long long
using namespace std;
int a[15][15];
int ans=2e9+5;
int sx,sy,ex,ey,n,m;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
void dfs(int x,int y,int sum,int health)
{
if(sum>ans)
{
return ;
}
if(health<=0)
{
return ;
}
if(a[x][y]==4)
{
health=6;
}
if(x==ex&&y==ey)
{
ans=min(ans,sum);
return ;
}
for(int i=0;i<4;i++)
{
int nx=x+dx[i];
int ny=y+dy[i];
if(nx<=0||nx>n||ny<=0||ny>m||a[nx][ny]==0)
{
continue ;
}
dfs(nx,ny,sum+1,health-1);
}
return ;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]==2)
{
sx=i;
sy=j;
}
if(a[i][j]==3)
{
ex=i;
ey=j;
}
}
}
dfs(sx,sy,0,6);
if(ans==2e9+5)
{
cout<<-1;
}
else
{
cout<<ans;
}
return 0;
}