#include<stdio.h>
int map[21][21],m[5]={0,1,0,-1,0},mh,mw,mt;

void s(int h,int w,int t)
{
	int i,j,x=w,y=h;
	if(t<11)
		for(i=j=0;i<4;x=w,y=h,j=0,i++)
			while(++j)
			{
				y+=m[i];
				x+=m[i+1];
				if((0>y||y>=mh||0>x||x>=mw)||(j==1&&map[y][x]==1))
					break;
				if(map[y][x]==3)
				{
					mt=t+1<mt?t+1:mt;
					return;
				}
				if(map[y][x]==1)
				{
					map[y][x]--;
					s(y-m[i],x-m[i+1],t+1);
					map[y][x]++;
					break;
				}
			}
}

int main()
{
	int i,j,sh,sw;
	for(;;)
	{
		scanf("%d%d",&mw,&mh);
		if(mw==0&&mh==0)
			break;
		for(i=0;i<mh;i++)
			for(j=0;j<mw;j++)
			{
				scanf("%d",&map[i][j]);
				if(map[i][j]==2)
					sh=i,sw=j;
			}
		mt=11;
		s(sh,sw,0);
		printf("%d\n",mt>10?-1:mt);
	}
	return 0;
}