#include #include #include #include #include #define rep(i, j) for(int i = 0; i < j; ++i) //typedef long long ll using namespace std; int dist[5100][5100]; queue> q; pair steps[] = {{0,1}, {0,-1}, {1, 0}, {-1, 0},{-1,-1},{1,-1},{-1,1},{1,1} }; bool isin(int x, int y){ if(x >= 0 && x <= 5000 && y >= 0 && y <= 5000) return true; return false; } int main(void){ int n, event; scanf("%d %d", &n, &event); rep(i, 5010){ rep(j, 5010){ dist[i][j] = -1; } } rep(i, n){ int x,y; scanf("%d %d", &x, &y); q.push({x,y}); dist[x][y] = 0; } while(!q.empty()){ pair fr = q.front(); q.pop(); rep(s, 8){ int nx = fr.first + steps[s].first; int ny = fr.second + steps[s].second; if(isin(nx, ny) && dist[nx][ny] == -1){ dist[nx][ny] = dist[fr.first][fr.second]+1; q.push({nx,ny}); } } } rep(i, event){ int x,y; scanf("%d %d", &x, &y); printf("%d\n", dist[x][y]); } return 0; }