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