#include <iostream>
#include <vector>
#include <queue>
using namespace std;
typedef pair<int, int> p;
int bfs(int y, int x);
int size, y1,x1,y2,x2;
int dy[] = {-2,-2,-1,-1,1,1,2,2};
int dx[] = {-1,1,-2,2,-2,2,-1,1};
int main() {
// your code goes here
int tc;
cin.tie(0);
cin.sync_with_stdio(0);
cin>>tc;
while(tc--){
cin>>size>>y1>>x1>>y2>>x2;
int cnt = bfs(y1,x1);
cout<<cnt<<'\n';
}
return 0;
}
int bfs(int y, int x){
bool field[size][size];
for(int i=0; i<size; i++)
for(int j = 0; j<size; j++)
field[i][j] = 0;
queue<pair<p, int>> q;
field[y][x] = 1;
q.push({{y,x}, 0});
while(q.size()){
int cury = q.front().first.first;
int curx = q.front().first.second;
int curm = q.front().second;
q.pop();
if(cury==y2&&curx==x2) return curm;
for(int i=0; i<8; i++){
int ny = cury+dy[i];
int nx = curx+dx[i];
if(ny<0||nx<0||ny>=size||nx>=size) continue;
if(!field[ny][nx]){
field[ny][nx]=1;
q.push({{ny,nx}, curm+1});
}
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHA7CgppbnQgYmZzKGludCB5LCBpbnQgeCk7CgppbnQgc2l6ZSwgeTEseDEseTIseDI7CmludCBkeVtdID0gey0yLC0yLC0xLC0xLDEsMSwyLDJ9OwppbnQgZHhbXSA9IHstMSwxLC0yLDIsLTIsMiwtMSwxfTsKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW50IHRjOwoJY2luLnRpZSgwKTsKCWNpbi5zeW5jX3dpdGhfc3RkaW8oMCk7CgljaW4+PnRjOwoJd2hpbGUodGMtLSl7CgkJY2luPj5zaXplPj55MT4+eDE+PnkyPj54MjsKCQlpbnQgY250ID0gYmZzKHkxLHgxKTsKCQljb3V0PDxjbnQ8PCdcbic7CgkJCgl9CglyZXR1cm4gMDsKfQoKaW50IGJmcyhpbnQgeSwgaW50IHgpewoJYm9vbCBmaWVsZFtzaXplXVtzaXplXTsKCWZvcihpbnQgaT0wOyBpPHNpemU7IGkrKykKCQlmb3IoaW50IGogPSAwOyBqPHNpemU7IGorKykKCQkJZmllbGRbaV1bal0gPSAwOwoJcXVldWU8cGFpcjxwLCBpbnQ+PiBxOwoJZmllbGRbeV1beF0gPSAxOwoJcS5wdXNoKHt7eSx4fSwgMH0pOwoJd2hpbGUocS5zaXplKCkpewoJCWludCBjdXJ5ID0gcS5mcm9udCgpLmZpcnN0LmZpcnN0OwoJCWludCBjdXJ4ID0gcS5mcm9udCgpLmZpcnN0LnNlY29uZDsKCQlpbnQgY3VybSA9IHEuZnJvbnQoKS5zZWNvbmQ7CgkJcS5wb3AoKTsKCQlpZihjdXJ5PT15MiYmY3VyeD09eDIpIHJldHVybiBjdXJtOwoJCQoJCWZvcihpbnQgaT0wOyBpPDg7IGkrKyl7CgkJCWludCBueSA9IGN1cnkrZHlbaV07CgkJCWludCBueCA9IGN1cngrZHhbaV07CgkJCWlmKG55PDB8fG54PDB8fG55Pj1zaXplfHxueD49c2l6ZSkgY29udGludWU7CgkJCWlmKCFmaWVsZFtueV1bbnhdKXsKCQkJCWZpZWxkW255XVtueF09MTsKCQkJCXEucHVzaCh7e255LG54fSwgY3VybSsxfSk7CgkJCX0KCQl9CgkJCgl9Cgp9