#include<iostream> #include<cstdio> #include<cstring> #include<utility> #include<queue> using namespace std; int n,m,a,b,t=0,w=1,map[501][501]; const int xi[4]={-1,0,1,0},yi[4]={0,-1,0,1}; queue<pair<int,int> > q; void bfs(){ while(!q.empty()){ for(int i=0;i<=3;i++){ int nowx=q.front().first+xi[i], nowy=q.front().second+yi[i], t=map[q.front().first][q.front().second]; if(map[nowx][nowy]!=-1||nowx<1||nowy<1||nowx>n||nowy>m)continue; map[nowx][nowy]=t+1; q.push(make_pair(nowx,nowy)); } q.pop(); } } int main(){ scanf("%d%d%d%d",&n,&m,&a,&b); memset(map,-1,sizeof(map)); for(int i=1;i<=a;i++){ int x,y;scanf("%d%d",&x,&y); map[x][y]=0; q.push(make_pair(x,y)); } bfs(); for(int i=1;i<=b;i++){ int x,y;scanf("%d%d",&x,&y); printf("%d\n",map[x][y]); } return 0; }