#include <iostream>
#include <vector>
#include <deque>
using namespace std;
struct Node {
int pt;
int k;
};
int main() {
int n,k,a,b,x,y;
cin >> n >> k >> a >> b >> x >> y;
vector<int> step(n,-1);
step[a-1] = 0;
deque<Node> dq;
dq.emplace_back(Node{a-1, 0});
while(dq.size()) {
auto item = dq.front();
dq.pop_front();
auto cStep = step[item.pt];
for(auto inc : {x,-y}) {
auto i = item.pt + inc;
i = (i+n)%n;
if(step[i] == -1 || cStep + 1 < step[i]) {
step[i] = cStep + 1;
dq.emplace_back(Node{i,item.k});
}
}
if(item.k < k) {
auto i = (item.pt+n/2)%n;
if(step[i] == -1 || cStep + 1 < step[i]) {
step[i] = cStep + 1;
dq.emplace_back(Node{i,item.k+1});
}
}
}
cout << step[b-1] << endl;
}
// 64 位输出请用 printf("%lld")