#include <bits/stdc++.h>
using namespace std;
int main() {
  double h, n, result = 0, middle;
  char prioritet = 'L';
  cin >> h >> n;
  while (h > 1) {
    middle = pow(2, h - 1);
    if ((middle < n) & (prioritet == 'L')) {
      n = n - pow(2, h - 1);
      result = result + pow(2, h);
      h--;
      continue;
    }
    if ((middle >= n) & (prioritet == 'L')) {
      h--;
      prioritet = 'R';
      result++;
      continue;
    }
    if ((middle >= n) & (prioritet == 'R')) {
      result = result + pow(2, h);
      h--;
      continue;
    }
    if ((middle < n) & (prioritet == 'R')) {
      n = n - pow(2, h - 1);
      h--;
      prioritet = 'L';
      result++;
      continue;
    }
  }
  cout.setf(ios::fixed);
  if ((prioritet == 'L') & (int(n) % 2 > 0)) {
    result = result + 1;
    cout << setprecision(0) << result;
    return 0;
  }
  if ((prioritet == 'L') & (int(n) % 2 == 0)) {
    result = result + 2;
    cout << setprecision(0) << result;
    return 0;
  }
  if ((prioritet == 'R') & (int(n) % 2 == 0)) {
    result = result + 1;
    cout << setprecision(0) << result;
    return 0;
  }
  if ((prioritet == 'R') & (int(n) % 2 > 0)) {
    result = result + 2;
    cout << setprecision(0) << result;
    return 0;
  }
}
