#include <iostream>
using namespace std;
#include<algorithm>
#include<queue>
#include<vector>
int bfs(int n,int a,int b,int x,int y,vector<int>& v){
queue<int>q;
q.push(a);
v[a]=0;
while(!q.empty()){
auto xn=q.front();
q.pop();
if(xn==b){
return v[xn];
}
int x1=(xn+x)%n;
if(v[x1]==-1){
v[x1]=v[xn]+1;
q.push(x1);
}
int y1=(xn-y+n)%n;
if(v[y1]==-1){
v[y1]=v[xn]+1;
q.push(y1);
}
}
return -1;
}
int main(){
int n,k,a,b,x,y;
cin>>n>>k>>a>>b>>x>>y;
a--;
b--;
vector<int>v(n,-1);
if(k==0){
int c=bfs(n,a,b,x,y,v);
cout<<c;
}
else{
vector<int>v1(n,-1);
int d=bfs(n,a,b,x,y,v1);
int a2=(a+n/2)%n;
vector<int>v2(n,-1);
int e=bfs(n,a2,b,x,y,v2);
e++;if(e==0){
e=a2;
}
int con=min(d,e);
cout<<con;
}
return 0;
}