#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,ans[505][505]={0};
struct ikun
{
int x,y;
friend istream&operator>>(istream&in,ikun&ik)
{
in>>ik.x>>ik.y;
return in;
}
};
bool f[505][505];
void bfs(queue<ikun>q)
{
while(q.size())
{
ikun cur=q.front();
q.pop();
if(f[cur.x][cur.y])continue;
f[cur.x][cur.y]=1;
int x=cur.x,y=cur.y;
if(x!=1&&f[x-1][y]==0)
{
ans[x-1][y]=ans[x][y]+1;
q.push({x-1,y});
}
if(x!=n&&f[x+1][y]==0)
{
ans[x+1][y]=ans[x][y]+1;
q.push({x+1,y});
}
if(y!=1&&f[x][y-1]==0)
{
ans[x][y-1]=ans[x][y]+1;
q.push({x,y-1});
}
if(y!=m&&f[x][y+1]==0)
{
ans[x][y+1]=ans[x][y]+1;
q.push({x,y+1});
}
}
return;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m>>a>>b;
queue<ikun>q;
while(a--)
{
ikun ik;
cin>>ik;
q.push(ik);
}
bfs(q);
while(b--)
{
ikun ik;
cin>>ik;
cout<<ans[ik.x][ik.y]<<"\n";
}
return 0;
}