#include<bits/stdc++.h>
using namespace std;
struct itn{
int x;
int y;
int t;
}u,z;
queue<itn>q;
int n,m,a,b,map1[501][501],e,w,dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
bool f[501][501];
void bfs(){
while(!q.empty()){
u=q.front();
q.pop();
for(int i=0;i<4;i++){
int tx=u.x+dx[i];
int ty=u.y+dy[i];
if(!f[tx][ty]){
f[tx][ty]=true;
map1[tx][ty]=u.t+1;
z.x=tx;
z.y=ty;
z.t=u.t+1;
q.push(z);
}
}
}
}
int main(){
cin>>n>>m>>a>>b;
for(int i=1;i<=a;i++){
cin>>e>>w;
u.x=e;u.y=w;u.t=0;
q.push(u);
}
bfs();
for(int i=1;i<=b;i++){
cin>>e>>w;
cout<<map1[e][w];
}
return 0;
}