var f,g:text;
v:array[1..2,1..400000000] of integer;
a,b:array[1..1000000] of integer;
ok:boolean;
x,y,x1,x2,y1,y2,n,m,l,c,i,j,k,nr:longint;
begin
assign(f,'gropi.in');reset(f);
assign(g,'gropi.out');rewrite(g);
read(f,c,n);
l:=2;
for i:=1 to n do begin
read(f,x,y);
v[x,y]:=-1;
end;
read(f,m);
for k:=1 to m do begin
read(f,x1,y1,x2,y2);
a[1]:=x1;
b[1]:=y1;
ok:=false;
nr:=1;
i:=2;
while not ok do begin
x:=a[nr];
y:=b[nr];
if (x-1>0)and(v[x-1,y]=0) then begin
v[x-1,y]:=v[x,y]+1;
a[i]:=x-1;
b[i]:=y;
inc(i);
end;
if (x-1=x2)and(y=y2) then break;
if (x+1<l+1)and(v[x+1,y]=0)then begin
v[x+1,y]:=v[x,y]+1;
a[i]:=x+1;
b[i]:=y;
inc(i);
end;
if (x+1=x2)and(y=y2) then break;
if (y-1>0)and(v[x,y-1]=0) then begin
v[x,y-1]:=v[x,y]+1;
a[i]:=x;
b[i]:=y-1;
inc(i);
end;
if (x=x2)and(y-1=y2) then break;
if (y+1<c+1)and(v[x,y+1]=0) then begin
v[x,y+1]:=v[x,y]+1;
a[i]:=x;
b[i]:=y+1;
inc(i);
end;
if (x=x2)and(y+1=y2) then break;
inc(nr);
end;
writeln(g,v[x2,y2]+1);
for i:=1 to l do
for j:=1 to c do
v[i,j]:=0;
end;
close(f);
close(g);
end.