#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")