#include<bits/stdc++.h>
#include<queue>
using namespace std;
int n,m,a,b;
int die[505][505];
int dx[]={-1,0,0,1};
int dy[]={0,-1,1,0};
struct node{
int x,y,step;
};
queue <node> q;
int main(){
scanf("%d%d%d%d",&n,&m,&a,&b);
for(int i=1;i<=505;i++)
for(int j=1;j<=505;j++)
die[i][j]=0x3fffffff;
int xx,yy;
for(int i=1;i<=a;i++){
scanf("%d%d",&xx,&yy);
node p;p.x=xx,p.y=yy,p.step=0;
q.push(p);
}
while(!q.empty()){
node now=q.front();
q.pop();
for(int i=0;i<4;i++){
node t;
t.x=now.x+dx[i],t.y=now.y+dy[i],t.step=now.step+1;
while(t.x<1||t.x>n||t.y<1||t.y>m)continue;
if(t.step<die[t.x][t.y]){
die[t.x][t.y]=t.step;
q.push(t);
}
}
}
for(int i=1;i<=b;i++){
scanf("%d%d",&xx,&yy);
printf("%d\n",die[xx][yy]);
}
return 0;
}