using namespace std;
struct c{
int x,y,z;
};
queue<c> q;
int mm[555][555];
int ans[100006];
int walk[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int main()
{
int n,m,a,b,aa,bb;
cin>>n>>m>>a>>b;
for(int i=1;i<=a;i++)
{
cin>>aa>>bb;
c tmp={aa,bb,0};
q.push(tmp);
}
for(int i=1;i<=b;i++)
{
cin>>aa>>bb;
if(mm[aa][bb]!=0)
{
ans[i]=mm[aa][bb];
continue;
}
while(!q.empty())
{
int ux=q.front().x;
int uy=q.front().y;
int uz=q.front().z;
q.pop();
if(mm[ux+1][uy]==0)
{
c tmp={ux+1,uy,uz+1};
q.push(tmp);
mm[ux+1][uy]=uz+1;
}
if(mm[ux-1][uy]==0)
{
c tmp={ux-1,uy,uz+1};
q.push(tmp);
mm[ux-1][uy]=uz+1;
}
if(mm[ux][uy+1]==0)
{
c tmp={ux,uy+1,uz+1};
q.push(tmp);
mm[ux][uy+1]=uz+1;
}
if(mm[ux][uy-1]==0)
{
c tmp={ux,uy-1,uz+1};
q.push(tmp);
mm[ux][uy-1]=uz+1;
}
if(mm[aa][bb]!=0)
{
ans[i]=mm[aa][bb];
break;
}
}
for(int i=1;i<=b;i++)
{
cout<<ans[i]<<endl;
}
}
}```