#include
#include
#include
using namespace std;
//bfs easy
struct Node
{
int x;
int y;
int steps;
Node(int a,int b,int c):x(a),y(b),steps(c) {}
};
bool vis[305][305];
int dis[8][2] = {{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,1}};
void bfs(int sx,int sy,int ex,int ey,int n)
{
int ans = 0;
int x,y;
queueq;
q.push(Node(sx,sy,0));
vis[sx][sy] = true;
while(!q.empty())
{
Node now = q.front();
q.pop();
if(now.x==ex&&now.y==ey)
{
printf("%d\n",now.steps);
return;
}
for(int i = 0; i<8; ++i)
{
x = now.x + dis[i][0];
y = now.y + dis[i][1];
if(x=0&&y=0&&!vis[x][y])
{
q.push(Node(x,y,now.steps+1));
vis[x][y] = true;
}
}
}
}
int main()
{
int n,ans;
scanf("%d",&n);
while(n--)
{
memset(vis,0,sizeof(vis));
int l,x1,y1,x2,y2;
scanf("%d",&l);
scanf("%d%d",&x1,&y1);
scanf("%d%d",&x2,&y2);
bfs(x1,y1,x2,y2,l);
}
return 0;
}