#include <iostream>
#include <algorithm>
using namespace std;

int w,h;
int area[21][21];

int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int ans;

void rec( int x, int y, int n ){
  //    cout << "rec : " << x << " " << y << " " << n << endl;

  int nn=n+1;
  bool f;
  if( n>10 ) return;

  for( int i,j, k=0;k<4;k++ ){
    //    cout << "k="<<k<<endl;
    i=x; j=y; f=true;
    while( f ){
      i+=dx[k]; j+=dy[k];
      if(j<0) break;      if(i<0) break;
      if(i>=h) break;     if(j>=w) break;
	 //	 cout << " i="<<i<< " j="<<j<< " "<<area[i][j] << endl;
      switch( area[i][j] ){
      case 3:  ans=min(ans,nn);return;
      case 1:{
	if( i-dx[k]!=x || j-dy[k]!=y ){
	  area[i][j]=0;
	  rec(i-dx[k],j-dy[k],nn);
	  area[i][j]=1;
	}
	f=false;
	break;
      }
      }	 
    }
  }
    //    cout << "ret="<<ret<<endl;
}

  void pr(){
    for( int i=0;i<h;i++ ){
      for( int j=0;j<w;j++ )
	cout << area[i][j] << " " ;
      cout << endl;
    }
  }

int main(){
  int sx,sy;

  while( cin>>w>>h && (w|h) ){
    //    cout << " h="<<h << " w="<<w << endl;

    for( int i=0;i<h;i++ )
      for( int j=0;j<w;j++ ){
	cin >> area[i][j];
	if( area[i][j]==2 ){ sx=i;sy=j;area[i][j]=0; }
      }
    /*
    cout << "area"<<endl;
    pr();
    cout<< "answer"<<endl;
    */
    ans=100;
    rec( sx,sy,0 );
    //    cout << "ans="<<ans<<endl;

    if( ans>10 ) ans=-1;
    cout << ans << endl;

  }

  return 0;
}