#include <bits/stdc++.h>
using namespace std;
int M, N;
const int L = 1e5 + 2;
template <int Size>
struct UF {
  UF() {
    for (int i = 0; i < Size; i++) {
      rep[i] = i;
    }
  }
  int find(int a) {
    while (rep[a] != a) {
      a = rep[a] = rep[rep[a]];
    }
    return a;
  }
  int rep[Size];
  bool uni(int a, int b) {
    a = find(a);
    b = find(b);
    if (a == b) {
      return false;
    }
    rep[a] = b;
    return true;
  }
};
struct st {
  st(int p, int q, int r) : b(p), g(q), w(r) {}
  int b;
  int g;
  int w;
};
UF<L> eq[2];
UF<L> al[2][2];
int main() {
  cin >> M >> N;
  if (N == 1) {
    cout << -1 << endl;
    return 0;
  }
  vector<st> cur, nex;
  cur.push_back(st(0, M, M));
  int ret = 0;
  while (cur.size()) {
    nex.clear();
    for (auto s : cur) {
      if (s.b == 1 && s.g == M && s.w == M) {
        cout << ret << endl;
        return 0;
      }
      if (s.g == s.w) {
        int r = M - s.g;
        for (int i = eq[s.b ^ 1].find(r + 1); i <= min(r + N / 2, M);
             i = eq[s.b ^ 1].find(i + 1)) {
          eq[s.b ^ 1].uni(i, i + 1);
          nex.push_back(st(s.b ^ 1, i, i));
        }
      }
      if (s.g == 0) {
        for (int i = al[s.b ^ 1][s.b ^ 1].find(M - s.w + 1);
             i <= M - s.w + min(N, s.w); i = al[s.b ^ 1][s.b ^ 1].find(i + 1)) {
          al[s.b ^ 1][s.b ^ 1].uni(i, i + 1);
          nex.push_back(st(s.b ^ 1, M, i));
        }
      } else if (s.g <= N) {
        for (int i = al[s.b ^ 1][s.b ^ 1].find(M - s.w);
             i <= M - s.w + min({N - s.g, s.g, s.w});
             i = al[s.b ^ 1][s.b ^ 1].find(i + 1)) {
          al[s.b ^ 1][s.b ^ 1].uni(i, i + 1);
          nex.push_back(st(s.b ^ 1, M, i));
        }
      }
      if (s.g == M) {
        int r = M - s.w;
        for (int i = al[s.b ^ 1][s.b].find(r + 1); i <= min(r + N, M);
             i = al[s.b ^ 1][s.b].find(i + 1)) {
          al[s.b ^ 1][s.b].uni(i, i + 1);
          nex.push_back(st(s.b ^ 1, 0, i));
        }
        int d = s.g - s.w;
        if (d > 0) {
          r = M - s.g;
          for (int i = eq[s.b ^ 1].find(r + d);
               2 * (i - r - d) + d <= N && i <= M;
               i = eq[s.b ^ 1].find(i + 1)) {
            eq[s.b ^ 1].uni(i, i + 1);
            nex.push_back(st(s.b ^ 1, i, i));
          }
        }
      }
    }
    cur.swap(nex);
    ret++;
  }
  cout << -1 << endl;
  return 0;
}
