#include<stdio.h>
int C,c,l,N,a[2][10001];
const int dx[]={0,1,0 ,-1},
dy[]={-1,0,1,0 };
int main()
{
freopen("gropi.in","r",stdin);
freopen("gropi.out","w",stdout);
scanf("%d %d",&C,&N);
int i,j;
for(i=1;i<=N;i++)
{scanf("%d %d",&l,&c);
a[l][c]=1;
}
int x[100000],ok=0,_i,_j,y[100000],li=1,lf=1;
for(i=1;i<=C&&ok==0;i++)
for(j=1;j<=2&&ok==0;j++)
if(a[j][i]==0) ok=1,x[1]=j,y[1]=i,a[i][j]=1;
for(li=1;li<=lf;li++)
{
i=x[li];
j=y[li];
for(int d=0;d<4;d++)
{_i=i+dx[d];
_j=j+dy[d];
if(_i<1||_i>2) continue;
if(_j<1||_j>C) continue;
if(a[_i][_j]) continue;
x[++lf]=_i;
y[lf]=_j;
a[_i][_j]=a[i][j]+1;
}
}
int m,x1,x2,y1,y2,min;
scanf("%d",&m);
for(i=1;i<=m;i++)
{scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
if(a[x1][y1]<a[x2][y2]) min=a[x2][y2]-a[x1][y1]+1;
else min=a[x1][y1]-a[x2][y2]+1;
printf("%d\n",min);
}
return 0;
}