#include <bits/stdc++.h>
using namespace std;
const long long MOD = (long long)1e15;
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= MOD;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % MOD;
    a = a * a % MOD;
  }
  return res;
}
int main(void) {
  cin.tie(0);
  ios::sync_with_stdio(false);
  long long n, m, a, b, p, q;
  cin >> n >> m >> a >> b >> p >> q;
  long long res = 1LL << 60;
  if (a == 1 && b == 1) {
    long long k = m / (p + q);
    res = min(
        {m, abs(m - min(k, n) * (p + q)), abs(min((k + 1), n) * (p + q) - m)});
  } else {
    long long N = min(40LL, n);
    vector<long long> L;
    for (int i = 0; i < (1 << (N / 2)); i++) {
      long long T = 0;
      for (int j = 0; j < N / 2; j++) {
        if ((i >> j) & 1) {
          T += p * powmod(a, j) + q * powmod(b, j);
          if (T > MOD) break;
        }
      }
      L.push_back(T);
    }
    L.push_back(1LL << 60);
    for (auto l : L) {
    }
    sort(L.begin(), L.end());
    for (int i = 0; i < (1 << (N - N / 2)); i++) {
      long long T = 0;
      for (int j = 0; j < (N - N / 2); j++) {
        if ((i >> j) & 1) {
          T += p * powmod(a, N / 2 + j) + q * powmod(b, N / 2 + j);
          if (T > MOD) break;
        }
      }
      auto it = lower_bound(L.begin(), L.end(), m - T);
      res = min(res, abs(m - T - *it));
      if (it != L.begin()) res = min(res, abs(m - T - *(it - 1)));
    }
  }
  cout << res << endl;
  return 0;
}
