<>; @d=sort{$b-$a}glob<>; ($x,$y)=glob<>; if($x==0&&$y==0){ print 0; exit; } $z=abs($x)+abs($y); if(grep$z==$_,@d){ print 1; exit; } ($d0)=@d0=grep{$_%2==0}@d; ($d1)=@d1=grep{$_%2==1}@d; if( $z%2 ) { if( grep{$z0=abs$z-$_;$z1=$z+$_;bs(0,@d0-1)}@d1 ) { print 2; exit; } } else { if( $z<=$d0*2 || $z<=$d1*2 ) { print 2; exit; } } print -1; sub bs { my($i1,$i2)=@_; while(1){ if($i1>$i2){ return 0; } my$i3=$i1+$i2>>1; if($d0[$i3]>$z1){ $i1=$i3+1; }elsif($d0[$i3]<$z0){ $i2=$i3-1; }else { return 1; } } }