#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int od[N][N];//传染时间
queue<pair<int ,int> > q;//最初当前任务
pair<int ,int> task[N*N];//存储领主位置
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
int n,m,a,b;
int vis[N][N];
int main(){
cin>>m>>n>>a>>b;
int x,y;
for(int i=1;i<=a;++i){//先把传染源加进去
cin>>x>>y;
q.push({x,y});
vis[x][y]=1;
}
for(int i=1;i<=b;++i){//最后输出领主感染时间
cin>>x>>y;
task[i]={x,y};
}
while(!q.empty()){
pair<int ,int> nz=q.front();
q.pop();
for(int i=0;i<4;++i){
int xx=nz.first+dx[i];
int yy=nz.second+dy[i];
if(xx<=n && xx>=1 && yy<=m && yy>=1 && !vis[xx][yy]){
vis[xx][yy]=1;
od[xx][yy]=od[nz.first][nz.second]+1;
q.push({xx,yy});
}
}
}
for(int i=1;i<=b;++i){
cout<<od[task[i].first][task[i].second]<<endl;
}
return 0;
}