#include <bits/stdc++.h>
using namespace std;
void rd(int& u) { scanf("%d", &u); }
void rd2(int& u, int& v) { scanf("%d%d", &u, &v); }
void rd3(int& u, int& v, int& w) { scanf("%d%d%d", &u, &v, &w); }
void ptn(int u) { printf("%d\n", u); }
void pte(int u) { printf("%d ", u); }
long long n, p, num[50];
long long pw(long long y, long long z) {
  long long res = 1;
  while (z--) res *= y;
  return res;
}
map<long long, long long> vis, st;
int main() {
  cin >> n >> p;
  long long ans = 0x3f3f3f3f;
  for (long long anss = 3000; anss >= 0; anss--) {
    if (n <= anss * p) continue;
    if (__builtin_popcountll(n - anss * p) <= anss && anss <= (n - anss * p))
      ans = min(ans, anss);
  }
  if (ans == 0x3f3f3f3f)
    puts("-1");
  else
    cout << ans << endl;
  return 0;
}
