#include <bits/stdc++.h>
using namespace std;
long long f[64][64];
long long C(int n, int k) {
  if (k < 0 || k > n) return 0;
  if (k == 0 || k == n) return 1;
  long long &x = f[n][k];
  if (x) return x;
  return x = C(n - 1, k - 1) + C(n - 1, k);
}
long long m, tmp, ans, MAX = 1;
int k, now;
int main() {
  cin >> m >> k;
  --k;
  for (int i = 0; i < int(18); i++) MAX *= 10;
  for (int i = 62; i >= 0; --i) {
    long long t = C(i, k - now);
    if (t + tmp <= m) {
      long long na = ans | (1LL << i);
      if (na <= MAX) {
        ans = na;
        now++;
        tmp += t;
      }
    }
  }
  cout << ans << "\n";
}
