#include <bits/stdc++.h>
using namespace std;
const int N = 550;
int g[N][N];
typedef pair<int, int>PII;
int q[N];
int n, m, a, b;
int d[N][N];
pair<int, int>ai[100050];
pair<int, int>bi[100050];
bool st[N][N];
void bfs(pair<int, int>h) {
memset(st, 0, sizeof(st));
queue<PII>q;
d[h.first][h.second] = 0;
st[h.first][h.second] = 1;
q.push({h.first, h.second});
int dx[4] = {-1, 0, 0, 1};
int dy[4] = {0, -1, 1, 0};
while (q.size()) {
auto t = q.front();
q.pop();
for (int i = 0; i < 4; i++) {
int x = t.first + dx[i];
int y = t.second + dy[i];
if (x >= 1 && x <= n && y >= 1 && y <= n && !st[x][y]) {
d[x][y] = min(d[x][y], d[t.first][t.second] + 1);
q.push({x, y});
st[x][y] = 1;
}
}
}
}
int main() {
memset(d, 600, sizeof(d));
cin >> n >> m >> a >> b;
for (int i = 1; i <= a; i++) {
int x, y;
cin >> x >> y;
ai[i] = make_pair(x, y);
}
for (int i = 1; i <= b; i++) {
int x, y;
cin >> x >> y;
bi[i] = make_pair(x, y);
}
for (int i = 1; i <= a; i++) {
bfs(ai[i]);
}
for (int i = 1; i <= b; i++) {
cout << d[bi[i].first][bi[i].second] << "\n";
}
return 0;
}