#include <bits/stdc++.h>
using namespace std;
using lli = long long int;
lli n, k;
lli get_count(lli x, lli p, lli q) {
  lli lo = p * x, hi = p * x + q - 1;
  if (hi > n) return max(n - lo + 1, 0LL);
  return q + get_count(x, p << 1, q << 1);
}
lli even(lli x) { return x - (x & 1); }
lli odd(lli x) {
  if (x & 1) return x;
  return x - 1;
}
void solve() {
  cin >> n >> k;
  lli lo, hi, mid, ans = 0;
  lo = 1, hi = n / 2;
  while (lo <= hi) {
    mid = (lo + hi) / 2;
    if (get_count(2LL * mid, 1, 2) >= k) {
      ans = max(ans, 2LL * mid);
      lo = mid + 1;
    } else
      hi = mid - 1;
  }
  lo = 1, hi = (n + 1) / 2;
  while (lo <= hi) {
    mid = (lo + hi) / 2;
    if (get_count(2LL * mid - 1, 1, 1) >= k) {
      ans = max(ans, 2LL * mid - 1);
      lo = mid + 1;
    } else
      hi = mid - 1;
  }
  cout << ans;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
}
