output_description: Print the number of patties in the bottom-most X layers from the bottom of a
  level-N burger.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N X
attempt: def examA():
      N = DI() / dec(7)
      ans = N
      print(N)
      return
  
  
  def examB():
      ans = 0
      print(ans)
      return
  
  
  def examC():
      ans = 0
      print(ans)
      return
  
  
  def examD():
      N, X = LI()
      S = [0] * (N + 1)
      P = [0] * (N + 1)
      S[0] = 1
      P[0] = 1
      for i in range(N):
          S[i + 1] = S[i] * 2 + 3
          P[i + 1] = P[i] * 2 + 1
  
      def dfs(n, x):
          if n == 0:
              return 0 < x
          if x >= S[n - 1] + 2:
              return 1 + P[n - 1] + dfs(n - 1, x - 2 - S[n - 1])
          return dfs(n - 1, x - 1)
  
      ans = dfs(N, X)
      print(ans)
      return
  
  
  from decimal import getcontext, Decimal as dec
  import sys, bisect, itertools, heapq, math, random
  from copy import deepcopy
  from heapq import heappop, heappush, heapify
  from collections import Counter, defaultdict, deque
  
  read = sys.stdin.buffer.read
  readline = sys.stdin.buffer.readline
  readlines = sys.stdin.buffer.readlines
  
  
  def I():
      return int(input())
  
  
  def LI():
      return list(map(int, sys.stdin.readline().split()))
  
  
  def DI():
      return dec(input())
  
  
  def LDI():
      return list(map(dec, sys.stdin.readline().split()))
  
  
  def LSI():
      return list(map(str, sys.stdin.readline().split()))
  
  
  def LS():
      return sys.stdin.readline().split()
  
  
  def SI():
      return sys.stdin.readline().strip()
  
  
  global mod, mod2, inf, alphabet, _ep
  mod = 10**9 + 7
  mod2 = 998244353
  inf = 10**18
  _ep = dec("0.000000000001")
  alphabet = [chr(ord("a") + i) for i in range(26)]
  alphabet_convert = {chr(ord("a") + i): i for i in range(26)}
  
  getcontext().prec = 28
  
  sys.setrecursionlimit(10**7)
  
  if __name__ == "__main__":
      examD()
  
  """
  142
  12 9 1445 0 1
  asd dfg hj o o
  aidn
  """
  
problem_description: Statement
  
  In some other world, today is Christmas.
  
  Mr. Takaha decides to make a multi-dimensional burger in his party. A _level-
  L burger_ (L is an integer greater than or equal to 0) is the following thing:
  
    * A level-0 burger is a patty.
    * A level-L burger (L \geq 1) is a bun, a level-(L-1) burger, a patty, another level-(L-1) burger and another bun, stacked vertically in this order from the bottom.
  
  For example, a level-1 burger and a level-2 burger look like `BPPPB` and
  `BBPPPBPBPPPBB` (rotated 90 degrees), where `B` and `P` stands for a bun and a
  patty.
  
  The burger Mr. Takaha will make is a level-N burger. Lunlun the Dachshund will
  eat X layers from the bottom of this burger (a layer is a patty or a bun). How
  many patties will she eat?
samples: [{"input": "2 7", "output": "4\n    \n\nThere are 4 patties in the bottom-most 7 layers of a level-2 burger\n(`BBPPPBPBPPPBB`).\n\n* * *"}, {"input": "1 1", "output": "0\n    \n\nThe bottom-most layer of a level-1 burger is a bun.\n\n* * *"}, {"input": "50 4321098765432109", "output": "2160549382716056\n    \n\nA level-50 burger is rather thick, to the extent that the number of its layers\ndoes not fit into a 32-bit integer."}]