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