#include<stdio.h>
int r,t,k=1,g=0,stop=1,a,time=0,queue[10000][4]={},x1,y1,arr[10121][10102]={},rear=0,front=1;
void f(int x,int y)
{
if(x>a||x<1||y>a||y<1)
{
if(k<50)
{
printf("why");
return ;
}
}
arr[x][y]=1;
if(x==x1&&y==y1)
{
printf("%d",time);
g=1;
r=x;
t=y;
return ;
}
if(arr[x+2][y+1]==0&&x+2<=a&&x+2>=1&&y+1<=a&&y+1>=1)
{
queue[front][1]=x+2;
queue[front++][2]=y+1;
}
if(arr[x+2][y-1]==0&&x+2<=a&&x+2>=1&&y-1<=a&&y-1>=1)
{
queue[front][1]=x+2;
queue[front++][2]=y-1;
}
if(arr[x-2][y+1]==0&&x-2<=a&&x-2>=1&&y+1<=a&&y+1>=1)
{
queue[front][1]=x-2;
queue[front++][2]=y+1;
}
if(arr[x-2][y-1]==0&&x-2<=a&&x-2>=1&&y-1<=a&&y-1>=1)
{
queue[front][1]=x-2;
queue[front++][2]=y-1;
}
if(arr[x+1][y+2]==0&&x+1<=a&&x+1>=1&&y+2<=a&&y+2>=1)
{
queue[front][1]=x+1;
queue[front++][2]=y+2;
}
if(arr[x-1][y+2]==0&&x-1<=a&&x-1>=1&&y+2<=a&&y+2>=1)
{
queue[front][1]=x-1;
queue[front++][2]=y+2;
}
if(arr[x+1][y-2]==0&&x+1<=a&&x+1>=1&&y-2<=a&&y-2>=1)
{
queue[front][1]=x+1;
queue[front++][2]=y-2;
}
if(arr[x+1][y-2]==0&&x+1<=a&&x+1>=1&&y-2<=a&&y-2>=1)
{
queue[front][1]=x+1;
queue[front++][2]=y-2;
}
if(arr[x-1][y-2]==0&&x-1<=a&&x-1>=1&&y-2<=a&&y-2>=1)
{
queue[front][1]=x-1;
queue[front++][2]=y-2;
}
}
int main()
{
int x,y,i,j;
scanf("%d",&a);
scanf("%d %d",&x,&y);
scanf("%d %d",&x1,&y1);
queue[rear][1]=x;
queue[rear][2]=y;
for(rear;rear<front;rear++)
{
for(rear;rear<stop;rear++)
{
if(g==1)
{
return 0;
}
f(queue[rear][1],queue[rear][2]);
}
time++;
stop=front;
}
}