// Joe Zimmerman
// Barrington High School
// ACSL Senior-3 Division
// PATHWAYS
#include <stdio.h>
#include <string.h>
char grid[128][128];
int dist[128][128];
int q[1024][2], qstart = 0, qend = 0;
const int INF = 0x7f7f7f7f;
int main()
{
int a, b,
i, j, k, x, y;
memset(grid,
0, sizeof(grid));
scanf("%d%d",
&a, &b);
while (a
&& b)
{
grid[a][b]
= 1;
scanf("%d%d",
&a, &b);
}
for (i = 0;
i < 5; i++)
{
scanf("%d%d%d%d",
&q[0][0], &q[0][1], &a, &b);
memset(dist,
0x7f, sizeof(dist)); // all distances infinite
dist[q[0][0]][q[0][1]]
= 0; // starting distance zero
qstart
= 0;
qend
= 1;
while
((qstart != qend) && (q[qstart][0] != a || q[qstart][1] != b))
{
x
= q[qstart][0];
y
= q[qstart][1];
for
(j = -1; j <= 1; j++)
for
(k = -1; k <= 1; k++)
if
((j || k) && grid[x+j][y+k]) // for all neighboring nodes
if
(dist[x][y] + 1 < dist[x+j][y+k]) // if there is a shorter path
{
dist[x+j][y+k]
= dist[x][y] + 1; // change the path length
q[qend][0]
= x+j;
q[qend][1]
= y+k;
++qend;
// push (breadth first)
}
++qstart;
// pop
}
if
(dist[a][b] < INF)
printf("%d\n",
dist[a][b]);
else
printf("NONE\n");
}
return 0;
}