#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
int main() {
  ios::sync_with_stdio(false);
  long long m, l = 0, r = 1e18 + 1;
  int k;
  cin >> m >> k;
  while (l + 1 < r) {
    long long x = (l + r) >> 1, d[66][66][2] = {};
    d[61][0][0] = 1;
    for (int i = 60; i >= 0; i--) {
      for (int j = 0; j <= k; j++) {
        if ((x + x) & (1ll << i)) {
          if (j) d[i][j][0] += d[i + 1][j - 1][0];
          d[i][j][1] += d[i + 1][j][0];
          if (j) d[i][j][1] += d[i + 1][j - 1][1];
          d[i][j][1] += d[i + 1][j][1];
        } else {
          d[i][j][0] += d[i + 1][j][0];
          if (j) d[i][j][1] += d[i + 1][j - 1][1];
          d[i][j][1] += d[i + 1][j][1];
        }
      }
    }
    long long z = d[0][k][0] + d[0][k][1];
    for (int i = 0; i <= 60; i++)
      for (int j = 0; j <= k; j++) d[i][j][0] = d[i][j][1] = 0;
    for (int i = 60; i >= 0; i--) {
      for (int j = 0; j <= k; j++) {
        if (x & (1ll << i)) {
          if (j) d[i][j][0] += d[i + 1][j - 1][0];
          d[i][j][1] += d[i + 1][j][0];
          if (j) d[i][j][1] += d[i + 1][j - 1][1];
          d[i][j][1] += d[i + 1][j][1];
        } else {
          d[i][j][0] += d[i + 1][j][0];
          if (j) d[i][j][1] += d[i + 1][j - 1][1];
          d[i][j][1] += d[i + 1][j][1];
        }
      }
    }
    long long y = d[0][k][0] + d[0][k][1];
    if (z - y <= m)
      l = x;
    else
      r = x;
  }
  cout << l;
}
