var n,m,i,j:integer; a,b:array[0..1001,0..1001] of integer; min,f,si,sj,fi,fj,k:longint; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); read(n,m); for i:=1 to n do for j:=1 to m do read(a[i,j]); for i:=1 to n do for j:=1 to m do b[i,j]:=a[i,j]; for i:=1 to n do begin a[i,0]:=0;a[i,m+1]:=0;end; for i:=1 to m do begin a[0,j]:=0;a[n+1,j]:=0;end; k:=4; f:=1; while (f=1) do begin f:=0; for i:=1 to n do for j:=1 to m do begin if (a[i,j]=k) and (a[i-1,j]=1) then begin f:=1; a[i-1,j]:=k+1;end; if (a[i,j]=k) and (a[i+1,j]=1) then begin f:=1;a[i+1,j]:=k+1;end; if (a[i,j]=k) and (a[i,j-1]=1) then begin f:=1;a[i,j-1]:=k+1;end; if (a[i,j]=k) and (a[i,j+1]=1) then begin f:=1;a[i,j+1]:=k+1;end; end; k:=k+1; end; for i:=1 to n do for j:=1 to m do begin if a[i,j]=4 then begin si:=i;sj:=j;end; if a[i,j]=3 then begin fi:=i;fj:=j;end; end; min:=maxint; if (a[fi-1,fj]>2) and (a[fi-1,fj]2) and (a[fi+1,fj]2) and (a[fi,fj-1]2) and (a[fi,fj+1]2) and (a[fi-1,fj]2) and (a[fi+1,fj]2) and (a[fi,fj-1]2) and (a[fi,fj+1]