#include<bits/stdc++.h>
using namespace std;
struct point{
int x,y;
};
int x1[100010],y1[100010],x2[100010],y2[100010],vis[510][510],ans[510][510];
int n,m,a1,a2;
queue<point> q;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
void bfs(){
while(!q.empty()){
point temp;
temp=q.front();
q.pop();
for(int i=0;i<=3;i++){
int tx=temp.x+dx[i];
int ty=temp.y+dy[i];
if(tx>=1&&tx<=n&&ty>=1&&ty<=m){
if(!vis[tx][ty]){
vis[tx][ty]=true;
ans[tx][ty]=ans[temp.x][temp.y]+1;
point w;
w.x=tx;
w.y=ty;
q.push(w);
}
}
}
}
}
int main(){
cin>>n>>m>>a1>>a2;
for(int i=1;i<=a1;i++){
cin>>x1[i]>>y1[i];
point lg;
lg.x=x1[i];
lg.y=y1[i];
q.push(lg);
}
for(int i=1;i<=a2;i++){
cin>>x2[i]>>y2[i];
}
bfs();
for(int i=1;i<=a2;i++){
cout<<ans[x2[i]][y2[i]]<<endl;
}
return 0;
}