求调/_ \
#include<iostream>
using namespace std;
const int QWQ = 1e5 + 10;
int n,m,a,b,x,y,xx,yy,front = 1,rear;
struct node{
int x,y;
}que[QWQ];
bool f[1005][1005];
int date[1005][1005];
int dx[5] = {0,1,0,-1,0},
dy[5] = {0,0,1,0,-1};
void bfs();
int main(){
cin>>n>>m>>a>>b;
for(int i = 1;i <= a; ++i){
cin>>x>>y;
que[++rear].x = x;
que[rear].y = y;
f[x][y] = 1;
date[x][y] = 0;
}
bfs();
for(int i = 1;i <= b; ++i){
cin>>xx>>yy;
cout<<date[xx][yy]<<endl;
}
return 0;
}
void bfs(){
// memset(f,0,sizeof(f));
while(front <= rear){
for(int i = 1;i <= 4; ++i){
int t1 = que[front].x + dx[i];
int t2 = que[front].y + dy[i];
if(t1 < 1 || t1 > n || t2 < 1 || t2 > m || f[t1][t2]) continue;
f[t1][t2] = 1;
que[++rear].x = t1;
que[rear].y = t2;
date[t1][t2] = date[que[front].x][que[front].y] + 1;
//cout<<date[t1][t2]<<endl;
}
++front;
}
}