#include <bits/stdc++.h>
using namespace std;
struct point{
int x,y;
};
int main(){
int qwq,qwe,n,m,a,b,k[510][510],bosx[100000],bosy[100000];
cin >> n >> m >> a >> b;
queue<point> q;
memset(k,-1,sizeof k);
for(int i = 0;i < a;i++){
cin >> qwq >> qwe;
k[qwq][qwe] = 0;
q.push({qwq,qwe});
}
for(int i = 0;i < b;i++){
cin >> bosx[i] >> bosy[i];
}
int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,1,-1};
while(q.size()){
int tx = q.front().x,ty = q.front().y;
q.pop();
for(int i = 0;i < 4;i++){
int fx = tx + dx[i],fy = ty + dy[i];
if(fx >= 1 && fx <= n && fy >= 1 && fy <= m && k[fx][fy] == -1){
k[fx][fy] = k[tx][ty] + 1;
q.push({fx,fy});
}
}
}
for(int i = 1;i <= b;i++){
cout << k[bosx[i]][bosy[i]] << endl;
}
}