#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;
}