function BFS(X,Y,C){
   var dx=[0,-1,1,0];
   var dy=[-1,0,0,1];
   var flag=true;
   var bfs=[[X,Y,C]];
   while(true){
      if(flag==false)break;
      if(bfs.length==0){cnt=-1;break;}
      var leaf=bfs.shift();
      var x=leaf[0];
      var y=leaf[1];
      var c=leaf[2];
      for(var i=0;i<4;i++){
         var j=1;
         while(true){
            xx=x+dx[i]*j;
            yy=y+dy[i]*j;
            if(xx<0 || yy<0 || xx>=w || yy>=h)break;
            if(yx[yy][xx]===1 && j===1)break;
            if(yx[yy][xx]===3){cnt=c+1;flag=false;break;}
            if(yx[yy][xx]===1 && j>1){
               yx[yy][xx]=0;
               if(c+1!=10)bfs.push([xx-dx[i],yy-dy[i],c+1]);
               break;
            }
            j++;
         }
      }
   }
}
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var Arr=(input.trim()).split("\n");
while(true){
   var wh=(Arr.shift()).split(" ").map(Number);
   var w=wh[0];
   var h=wh[1];
   if(w==0 && h==0)break;
   var yx=[];
   var s=[];
   for(var i=0;i<h;i++){
      var arr=(Arr.shift()).split(" ").map(Number);
      if(arr.indexOf(2)!=-1)s=[arr.indexOf(2),i];
      yx.push(arr);
   }
   var cnt;
   BFS(s[0],s[1],0);
   console.log(cnt);
}