{
TASK:lab101
LANG:PASCAL
}
{$I-,Q-,R-,S-}
const
   Mo : array[1..4,1..2] of longint =
      ((-1,0),(1,0),(0,-1),(0,1));

var
   board : array[1..10,1..10] of byte;
   keys : array[1..10] of record
      a,b : byte;
      x,y : byte;
   end;
   MapKeys : array[1..10,1..10] of byte;
   n,m,p,WX,WY,p1x,p1y,p2x,p2y : longint;


procedure readfile;
var
   f : text;
   i,j : longint;
begin
   assign(f,'');
   reset(F);
   readln(f,n,m);
   for i:=1 to n do
      begin
         for j:=1 to m do read(f,board[i,j]);
         readln(f);
      end;
   readln(f,p);
   for i:=1 to p do
      begin
         readln(f,keys[i].x,keys[i].y,keys[i].a,keys[i].b);
         MapKeys[keys[i].a,keys[i].b]:=i;
      end;
   readln(f,p1y,p1x);
   readln(f,p2y,p2x);
   readln(f,WY,WX);
   close(f);
end;
function wave(x,y : byte) : longint;
var
   a : array[1..10,1..10] of longint;
   i,j,k,l : longint;
begin
   fillDword(a,100,100);
   a[x,y]:=0;
   for l:=1 to 40 do
      for i:=1 to n do
         for j:=1 to m do
            for k:=1 to 4 do
               if (i+mo[k,1]>0)and(i+mo[k,1]<=n) and
                  (j+mo[k,2]>0)and(j+mo[k,2]<=m) then
                  if a[i,j]+1<a[i+mo[k,1],j+mo[k,2]] then
                     a[i+mo[k,1],j+mo[k,2]]:=a[i,j]+1;
   wave:=a[wx,wy];
end;
var
   q : longint;
begin
   readfile;
   q:=wave(p2x,p2y);
   p:=wave(p1x,p1y);
   if q=p then writeln('0') else
     begin
        if q>p then writeln('2')
        else writeln('1');
     end;
end.

