#include <stdio.h>#include <queue>#include <string.h>#include <iostream>using namespace std;typedef struct node{ int x; int y; int step;}Node;int Map[310][310];int dir[8][2]={-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1,-2,1};void BFS(int n, int sx, int sy, int ex, int ey){ if (sx == ex && sy == ey) { printf("0n"); return; } Node temp; queue<Node> Queue; temp.x = sx; temp.y = sy; temp.step = 0; Map[sx][sy] = 1; Queue.push(temp); while(!Queue.empty()) { temp.x = Queue.front().x; temp.y = Queue.front().y; temp.step = Queue.front().step; Queue.pop(); if (temp.x == ex && temp.y == ey) { printf("%dn", temp.step); return; } for (int i = 0; i < 8; i++) { Node Next; Next.x = temp.x + dir[i][0]; Next.y = temp.y + dir[i][1]; Next.step = temp.step + 1; if (Next.x >= 0 && Next.x < n && Next.y >= 0 && Next.y < n && Map[Next.x][Next.y] == 0) { Map[Next.x][Next.y] = 1; Queue.push(Next); } } }}int main(){ int nCase; int n; int sx, sy, ex, ey; scanf("%d", &nCase); for (int i = 0; i < nCase; i++) { memset(Map, 0, sizeof(Map)); scanf("%d", &n); scanf("%d%d%d%d", &sx, &sy, &ex, &ey); BFS(n, sx, sy, ex, ey); } return 0;}