#include <stdio.h>
int m,n,a,b,c,d,p,q,f,board[1100][1100]={},move=0;
int queue[2][1000101]={},front=-1,back=-1;
void push(int x,int y)
{
if(x<1||x>n||y<1||y>n)
{
return ;
}
queue[0][++back]=x;
queue[1][back]=y;
if(x==c&&y==d)
{
f=1;
}
}
//void view()
//{
// printf("\nqueue >>\n");
// for(int i=front+1;i<=back;i++)
// printf("%d ",queue[0][i]);
// printf("\n");
// for(int i=front+1;i<=back;i++)
// printf("%d ",queue[1][i]);
// printf("\n");
//}
int main()
{
scanf("%d %d %d %d %d",&n,&a,&b,&c,&d);
push(a,b);
m=back;
while(1)
{
front++;
p=queue[0][front];
q=queue[1][front];
// printf("pop data :%d %d ",p,q);
push(p+2,q+1);
push(p+2,q-1);
push(p-2,q+1);
push(p-2,q-1);
push(p+1,q+2);
push(p-1,q+2);
push(p+1,q-2);
push(p-1,q-2);
if(f==1)
{
break;
}
// view();
if(m==front)
{
m=back;
move++;
}
}
printf("%d",move+1);
return 0;
}
//체스판
/*
1|. . . . . . . . . . . . . . . . . . . .
2|. . . . . . . . . . . . . . . . . . . .
3|. . . . . . . . . . . . . . . . . . . .
4|. . . . . . . . . . . . . . . . . . . .
5|. . . . . . . . . . . . . . . . . . . .
6|. . . . . . . . . . . . . . . . . . . .
7|. . . . . . . . . . . . . . . . . . . .
8|. . . . . . . . . . . . . . . . . . . .
9|. . . . . . . . . . . . . . . . . 1 . .
10|. . . . . . . . . . . . . . . . . . . N
11|. . . . . . . . . . . . . . . . 2 . . .
12|. . . . . . . . . . . . . . 3 . . . . .
13|. . . . . . . . . . . . 4 . . . . . . .
14|. . . . . . . . . . 5 . . . . . . . . .
15|. . . . . . . . . . . . . . . . . . . .
16|. . . . . . . . . 6 . . . . . . . . . .
17|. . . . . . . 7 . . . . . . . . . . . .
18|. 0 . . . 8 . . . . . . . . . . . . . .
19|. . . 9 . . . . . . . . . . . . . . . .
20|X . . . . . . . . . . . . . . . . . . .
__|_______________________________________
|a b c d e f g h i j k l m n o p q r s t
N=t10
Nr9
Nq11
No12
Nm13
Nk14
Nj16
Nh17
Nf18
Nd19
Nb18
Na20
*/



