N, X = gets.split.map(&:to_i)

#レベルnバーガーの厚さ
def a(n)
  2**(n+2)-3
end

#レベルnバーガーに含まれるPの数
def p(n)
  2**(n+1)-1
end

def dfs(n, x)
  if x == 1
    if n > 0
      return 0
    else
      return 1
    end
  end

  if x == a(n)
    return p(n)
  end

  if x == 2 + a(n-1)
    return 1 + p(n-1)
  end

  if x < 2 + a(n-1)
    return dfs(n-1, x-1)
  else
    return 1 + p(n-1) + dfs(n-1, x-2-a(n-1))
  end
end

puts dfs(N,X)
