#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef vector<pii> vpii;
typedef unsigned long long llu;

#define debug(x) cerr<<#x<<" "<<x<<endl;
#define f first
//#define s second
#define mp make_pair
#define pb push_back
vi A;
int main()
{
    long long n,h,l,zz,k;
    long long count=1;
    char s='l';
    scanf("%d %d",&h,&n);
    k=n;
    while(k)
    {
        A.pb(k);
        k=k/2;
    }
    l=A.size();
    h++;
    for(int i=l-2;i>=0;i--)
    {  h--;
        debug(i);
        debug(A[i]);
        if(s=='l')
           zz=2*A[i+1];
           else
            zz=2*A[i+1]+1;
            if(zz==A[i])
              {
              if(s=='r')
              s='l';
              else
                s='r';
                }
           else
            count= count+(( (1ll)<<(h))) -1 ;
            count++;
    }
    printf("%d\n",count);
    return 0;
}
