#include <bits/stdc++.h>
#define maxM 310
#define maxN 1000000
using namespace std;
int n,sx,sy,ex,ey;
int dir[16]={1,2,-1,2,1,-2,-1,-2,2,1,2,-1,-2,1,-2,-1};
int xx[maxN],yy[maxN];
int vis[maxM][maxM],step[maxM][maxM];
int fun()
{
memset(step,0,sizeof(step));
memset(vis,0,sizeof(vis));
int head=0,tail=0;
xx[tail]=sx,yy[tail++]=sy,vis[sx][sy]=1;
xx[tail]=ex,yy[tail++]=ey,vis[ex][ey]=2;
while (head!=tail)
{
int x=xx[head],y=yy[head++],t=step[x][y];
for (int i=0;i<16;)
{
int l=x+dir[i++],r=y+dir[i++];
if (r<0||r>=n||l<0||l>=n)
continue ;
if (vis[x][y]!=vis[l][r]&&vis[x][y]&&vis[l][r])
return step[l][r]+step[x][y]+1;
if (!vis[l][r]){
xx[tail]=l,yy[tail++]=r;
step[l][r]=t+1;
vis[l][r]=vis[x][y];
}
}
}
return 0;
}
int main()
{
int t;
scanf("%d",&t);
while (t--&&scanf("%d%d%d%d%d",&n,&sx,&sy,&ex,&ey))
printf("%d\n",fun());
return 0;
}
Input output
3 5
8 28
0 0 0
7 0
100
0 0
30 50
10
1 1
1 1