- {$M 40000000} 
- const maxm = 1000; 
-       maxn = 1000; 
-       maxq = 10000000; 
-       oo = 100000000; 
- type o = record 
-            x,y:word; 
-          end; 
-      tqueue = record 
-                 front,rear: longint; 
-                 item: array[0..maxq-1] of o; 
-               end; 
- var n,m,sx,sy,fx,fy:word; 
-     a: array[0..maxm+1,0..maxn+1] of longint; 
-     queue: tqueue; 
- procedure initq; 
- begin 
-   with queue do 
-   begin 
-     front:=0; 
-     rear:=1; 
-   end; 
- end; 
- function qempty:boolean; 
- begin 
-   with queue do 
-   qempty:=(rear>front); 
- end; 
- procedure push(x,y:word); 
- begin 
-   with queue do 
-   begin 
-     front:=(front+1) mod maxq; 
-     item[front].x:=x; 
-     item[front].y:=y; 
-   end; 
- end; 
- function pop:o; 
- begin 
-   with queue do 
-   begin 
-     pop:=item[rear]; 
-     rear:=(rear+1) mod maxq; 
-   end; 
- end; 
- procedure enter; 
- var i,j:word; 
- begin 
-   initq; 
-   readln(n,m); 
-   for i:=1 to n do 
-   begin 
-     for j:=1 to m do 
-     begin 
-       read(a[i,j]); 
-       if a[i,j]=0 then push(i,j) 
-       else a[i,j]:=oo; 
-     end; 
-     readln; 
-   end; 
-   readln(sx,sy,fx,fy); 
- end; 
- procedure printa; 
- var i,j:word; 
- begin 
-   for i:=1 to n do 
-   begin 
-     for j:=1 to m do 
-     write(a[i,j],' '); 
-     writeln; 
-   end; 
-   writeln; 
- end; 
- procedure qhd; 
- var p:o; 
- begin 
-   while not qempty do 
-   begin 
-     p:=pop; 
-     with p do 
-     begin 
-       if (x<n) and (a[x+1,y]>a[x,y]+1) then 
-       begin 
-         a[x+1,y]:=a[x,y]+1; 
-         push(x+1,y); 
-       end; 
-       if (x>1) and (a[x-1,y]>a[x,y]+1) then 
-       begin 
-         a[x-1,y]:=a[x,y]+1; 
-         push(x-1,y); 
-       end; 
-       if (y<m) and (a[x,y+1]>a[x,y]+1) then 
-       begin 
-         a[x,y+1]:=a[x,y]+1; 
-         push(x,y+1); 
-       end; 
-       if (y>1) and (a[x,y-1]>a[x,y]+1) then 
-       begin 
-         a[x,y-1]:=a[x,y]+1; 
-         push(x,y-1); 
-       end; 
-     end; 
-   end; 
- end; 
- procedure tknp; 
- var dau,cuoi,giua,i,j:longint; 
-     visit: array[1..maxn,1..maxm] of boolean; 
-   function dfs(x,y:longint):boolean; 
-   var f:boolean; 
-   begin 
-     if not visit[x,y] then visit[x,y]:=true 
-     else 
-     begin 
-       dfs:=false; 
-       exit; 
-     end; 
-     f:=false; 
-     if a[x,y]>giua then 
-     begin 
-       dfs:=false; 
-       exit; 
-     end 
-     else 
-     if (x=fx) and (y=fy) then f:=true 
-     else 
-     begin 
-       if (not f) and (x<n) then f:=dfs(x+1,y); 
-       if (not f) and (x>1) then f:=dfs(x-1,y); 
-       if (not f) and (y<m) then f:=dfs(x,y+1); 
-       if (not f) and (y>1) then f:=dfs(x,y-1); 
-     end; 
-     dfs:=f; 
-   end; 
- begin 
-   dau:=0; 
-   cuoi:=m*n; 
-   repeat 
-     for i:=1 to n do 
-     for j:=1 to m do 
-     visit[i,j]:=false; 
-     giua:=(dau+cuoi) div 2; 
-     if dfs(sx,sy) then 
-     cuoi:=giua-1 
-     else 
-     dau:=giua+1; 
-   until dau>cuoi; 
-   writeln(dau); 
- end; 
- begin 
-   enter; 
-   qhd; 
-   tknp; 
- end. 
-   
-   
				eyRNIDQwMDAwMDAwfQpjb25zdCBtYXhtID0gMTAwMDsKICAgICAgbWF4biA9IDEwMDA7CiAgICAgIG1heHEgPSAxMDAwMDAwMDsKICAgICAgb28gPSAxMDAwMDAwMDA7CnR5cGUgbyA9IHJlY29yZAogICAgICAgICAgIHgseTp3b3JkOwogICAgICAgICBlbmQ7CiAgICAgdHF1ZXVlID0gcmVjb3JkCiAgICAgICAgICAgICAgICBmcm9udCxyZWFyOiBsb25naW50OwogICAgICAgICAgICAgICAgaXRlbTogYXJyYXlbMC4ubWF4cS0xXSBvZiBvOwogICAgICAgICAgICAgIGVuZDsKdmFyIG4sbSxzeCxzeSxmeCxmeTp3b3JkOwogICAgYTogYXJyYXlbMC4ubWF4bSsxLDAuLm1heG4rMV0gb2YgbG9uZ2ludDsKICAgIHF1ZXVlOiB0cXVldWU7CnByb2NlZHVyZSBpbml0cTsKYmVnaW4KICB3aXRoIHF1ZXVlIGRvCiAgYmVnaW4KICAgIGZyb250Oj0wOwogICAgcmVhcjo9MTsKICBlbmQ7CmVuZDsKZnVuY3Rpb24gcWVtcHR5OmJvb2xlYW47CmJlZ2luCiAgd2l0aCBxdWV1ZSBkbwogIHFlbXB0eTo9KHJlYXI+ZnJvbnQpOwplbmQ7CnByb2NlZHVyZSBwdXNoKHgseTp3b3JkKTsKYmVnaW4KICB3aXRoIHF1ZXVlIGRvCiAgYmVnaW4KICAgIGZyb250Oj0oZnJvbnQrMSkgbW9kIG1heHE7CiAgICBpdGVtW2Zyb250XS54Oj14OwogICAgaXRlbVtmcm9udF0ueTo9eTsKICBlbmQ7CmVuZDsKZnVuY3Rpb24gcG9wOm87CmJlZ2luCiAgd2l0aCBxdWV1ZSBkbwogIGJlZ2luCiAgICBwb3A6PWl0ZW1bcmVhcl07CiAgICByZWFyOj0ocmVhcisxKSBtb2QgbWF4cTsKICBlbmQ7CmVuZDsKcHJvY2VkdXJlIGVudGVyOwp2YXIgaSxqOndvcmQ7CmJlZ2luCiAgaW5pdHE7CiAgcmVhZGxuKG4sbSk7CiAgZm9yIGk6PTEgdG8gbiBkbwogIGJlZ2luCiAgICBmb3Igajo9MSB0byBtIGRvCiAgICBiZWdpbgogICAgICByZWFkKGFbaSxqXSk7CiAgICAgIGlmIGFbaSxqXT0wIHRoZW4gcHVzaChpLGopCiAgICAgIGVsc2UgYVtpLGpdOj1vbzsKICAgIGVuZDsKICAgIHJlYWRsbjsKICBlbmQ7CiAgcmVhZGxuKHN4LHN5LGZ4LGZ5KTsKZW5kOwpwcm9jZWR1cmUgcHJpbnRhOwp2YXIgaSxqOndvcmQ7CmJlZ2luCiAgZm9yIGk6PTEgdG8gbiBkbwogIGJlZ2luCiAgICBmb3Igajo9MSB0byBtIGRvCiAgICB3cml0ZShhW2ksal0sJyAnKTsKICAgIHdyaXRlbG47CiAgZW5kOwogIHdyaXRlbG47CmVuZDsKcHJvY2VkdXJlIHFoZDsKdmFyIHA6bzsKYmVnaW4KICB3aGlsZSBub3QgcWVtcHR5IGRvCiAgYmVnaW4KICAgIHA6PXBvcDsKICAgIHdpdGggcCBkbwogICAgYmVnaW4KICAgICAgaWYgKHg8bikgYW5kIChhW3grMSx5XT5hW3gseV0rMSkgdGhlbgogICAgICBiZWdpbgogICAgICAgIGFbeCsxLHldOj1hW3gseV0rMTsKICAgICAgICBwdXNoKHgrMSx5KTsKICAgICAgZW5kOwogICAgICBpZiAoeD4xKSBhbmQgKGFbeC0xLHldPmFbeCx5XSsxKSB0aGVuCiAgICAgIGJlZ2luCiAgICAgICAgYVt4LTEseV06PWFbeCx5XSsxOwogICAgICAgIHB1c2goeC0xLHkpOwogICAgICBlbmQ7CiAgICAgIGlmICh5PG0pIGFuZCAoYVt4LHkrMV0+YVt4LHldKzEpIHRoZW4KICAgICAgYmVnaW4KICAgICAgICBhW3gseSsxXTo9YVt4LHldKzE7CiAgICAgICAgcHVzaCh4LHkrMSk7CiAgICAgIGVuZDsKICAgICAgaWYgKHk+MSkgYW5kIChhW3gseS0xXT5hW3gseV0rMSkgdGhlbgogICAgICBiZWdpbgogICAgICAgIGFbeCx5LTFdOj1hW3gseV0rMTsKICAgICAgICBwdXNoKHgseS0xKTsKICAgICAgZW5kOwogICAgZW5kOwogIGVuZDsKZW5kOwpwcm9jZWR1cmUgdGtucDsKdmFyIGRhdSxjdW9pLGdpdWEsaSxqOmxvbmdpbnQ7CiAgICB2aXNpdDogYXJyYXlbMS4ubWF4biwxLi5tYXhtXSBvZiBib29sZWFuOwogIGZ1bmN0aW9uIGRmcyh4LHk6bG9uZ2ludCk6Ym9vbGVhbjsKICB2YXIgZjpib29sZWFuOwogIGJlZ2luCiAgICBpZiBub3QgdmlzaXRbeCx5XSB0aGVuIHZpc2l0W3gseV06PXRydWUKICAgIGVsc2UKICAgIGJlZ2luCiAgICAgIGRmczo9ZmFsc2U7CiAgICAgIGV4aXQ7CiAgICBlbmQ7CiAgICBmOj1mYWxzZTsKICAgIGlmIGFbeCx5XT5naXVhIHRoZW4KICAgIGJlZ2luCiAgICAgIGRmczo9ZmFsc2U7CiAgICAgIGV4aXQ7CiAgICBlbmQKICAgIGVsc2UKICAgIGlmICh4PWZ4KSBhbmQgKHk9ZnkpIHRoZW4gZjo9dHJ1ZQogICAgZWxzZQogICAgYmVnaW4KICAgICAgaWYgKG5vdCBmKSBhbmQgKHg8bikgdGhlbiBmOj1kZnMoeCsxLHkpOwogICAgICBpZiAobm90IGYpIGFuZCAoeD4xKSB0aGVuIGY6PWRmcyh4LTEseSk7CiAgICAgIGlmIChub3QgZikgYW5kICh5PG0pIHRoZW4gZjo9ZGZzKHgseSsxKTsKICAgICAgaWYgKG5vdCBmKSBhbmQgKHk+MSkgdGhlbiBmOj1kZnMoeCx5LTEpOwogICAgZW5kOwogICAgZGZzOj1mOwogIGVuZDsKYmVnaW4KICBkYXU6PTA7CiAgY3VvaTo9bSpuOwogIHJlcGVhdAogICAgZm9yIGk6PTEgdG8gbiBkbwogICAgZm9yIGo6PTEgdG8gbSBkbwogICAgdmlzaXRbaSxqXTo9ZmFsc2U7CiAgICBnaXVhOj0oZGF1K2N1b2kpIGRpdiAyOwogICAgaWYgZGZzKHN4LHN5KSB0aGVuCiAgICBjdW9pOj1naXVhLTEKICAgIGVsc2UKICAgIGRhdTo9Z2l1YSsxOwogIHVudGlsIGRhdT5jdW9pOwogIHdyaXRlbG4oZGF1KTsKZW5kOwpiZWdpbgogIGVudGVyOwogIHFoZDsKICB0a25wOwplbmQuCgo=