#include<bits/stdc++.h>
#define X first
#define Y second
using namespace std;
int dx[8] = { 2,-2,1,-1,2,-2,1,-1 };
int dy[8] = { 1,1,2,2,-1,-1,-2,-2 };
int board[302][302];
int vis[302][302];
int main() {
int n; //테스트 케이스
cin >> n;
while (n--) {
queue<pair<int, int>> Q;
int l; //체스판의 한 변의 길이
cin >> l;
for (int i = 0; i < l; i++) fill(vis[i], vis[i] + l, -1);
int a, b,c,d;
cin >> a >> b; //출발지
cin >> c >> d; //도착지
Q.push({ a,b });
vis[a][b] = 0;
while (!Q.empty()) {
auto cur = Q.front(); Q.pop();
if (cur.X == c && cur.Y == d) {
cout << vis[cur.X][cur.Y]<<"\n";
break;
}
for (int i = 0; i < 8; i++) {
int nx = cur.X + dx[i];
int ny = cur.Y + dy[i];
if (nx < 0 || nx >= l || ny < 0 || ny >= l)continue;
if (vis[nx][ny] != -1)continue;
Q.push({ nx,ny });
vis[nx][ny] = vis[cur.X][cur.Y] + 1;
}
}
}
}