/*

NAME:     Andrei Daian

GRADE:    12

SCHOOL:   Tiberiu Popoviciu Computer Science High School, Cluj-Napoca

DIVISION: Senior 5

*/

 

#include<iostream.h>

#include<stdio.h>

#include<limits.h>

#include<conio.h>

 

int a[100][100], nl, nc;

int x1, y1, x2, y2;

int t[100][100];

int min;

 

const int dx[]={101, -1, -1, -1, 0, 1, 1, 1, 0};

const int dy[]={101, -1, 0, 1, 1, 1, 0, -1, -1};

 

void back(int i, int j, int lung);

int valid(int i, int j);

 

void main(){

  int tz;

  clrscr();

  cout << "0. ";

  scanf("%d, %d", &x1, &y1);

  while(!(x1==0 && y1==0)){

    if (x1>nl)

      nl=x1;

    if (y1>nc)

      nc=y1;

    a[x1][y1]=1;

    scanf(", %d, %d", &x1, &y1);

  }

  for (tz=1; tz<=5; tz++){

    min=INT_MAX;

    cout << tz << ". ";

    scanf("%d, %d, %d, %d", &x1, &y1, &x2, &y2);

    t[x1][y1]=1;

    back(x1, y1, 0);

    cout << tz << ". ";

    if (min!=INT_MAX)

      cout << min << endl;

    else

      cout << "NONE\n";

    t[x1][y1]=0;

  }

  getch();

}

 

void back(int i, int j, int lung){

  for (int k=1; k<=8; k++){

    int ii=i+dx[k];

    int jj=j+dy[k];

    if (valid(ii, jj)){

      t[ii][jj]=1;

      if (ii==x2 && jj==y2){

                if (lung+1<=min)

                  min=lung+1;

      }else

                back(ii, jj, lung+1);

      t[ii][jj]=0;

    }

  }

}

 

int valid(int i, int j){

  if (i<0 || i>nl || j<0 || j>nc)

    return 0;

  if (a[i][j]==0)

    return 0;

  if (t[i][j]==1)

    return 0;

  return 1;

}