#include<stdio.h>
int d[30][30],w,h;
int X[]={0,1,0,-1};
int Y[]={1,0,-1,0};
int f(int x,int y,int m){
  int i,j,ny,nx,b;
  if(m==0)return 0;
  for(i=0;i<4;i++){
    for(j=1;d[y+Y[i]*j][x+X[i]*j]==1;j++);
    if(d[ny=y+Y[i]*j][nx=x+X[i]*j]==4)return 1;
    if(d[ny][nx]==0||j==1)continue;
    if(d[ny][nx]==2)b=2;
    else            b=1;
    d[ny][nx]=1;
    if(f(nx-X[i],ny-Y[i],m-1))return 1;
    d[ny][nx]=b;
  }
  return 0;
}
int main(){
  int i,j,sy,sx;
  while(scanf("%d %d",&w,&h),w||h){
    for(i=1;i<=h;i++){
      for(j=1;j<=w;j++){
	scanf("%d",&d[i][j]);
	if(d[i][j]==2)d[sy=i][sx=j]=0;
	d[i][j]++;
      }
      d[i][j]=0;
    }
    for(j=1;j<=w;j++)d[i][j]=0;
    for(i=1;i<11;i++){
      if(f(sx,sy,i))break;
    }
    if(i-11)printf("%d\n",i);
    else    printf("-1\n");
  }
  return 0;
}
	