open System
let a = Console.ReadLine().Split()
let n = int64(a.[1]) - 1L
let h = int(a.[0]) - 1
let f (h:int) (n:int64)=
let mutable i = h
let mutable mv = 0L
let mutable ans = 0L
let mutable tmp = 0L
let mutable temp = 0L
while i >= 0 do
if ((n &&& (1L <<< i)) = 0L) then
temp <- 0L;
else
temp <- 1L;
if (mv <> temp) then
ans <- ans + ((1L <<< (i + 1)) - 1L);
mv <- mv ^^^ 1L
mv <- mv ^^^ 1L
ans <- ans + 1L
i <- i - 1
printfn "%i" ans
f h n
b3BlbiBTeXN0ZW0KIApsZXQgYSA9IENvbnNvbGUuUmVhZExpbmUoKS5TcGxpdCgpCmxldCBuID0gaW50NjQoYS5bMV0pIC0gMUwKbGV0IGggPSBpbnQoYS5bMF0pIC0gMQogCmxldCBmIChoOmludCkgKG46aW50NjQpPSAKICAgIGxldCBtdXRhYmxlIGkgPSBoCiAgICBsZXQgbXV0YWJsZSBtdiA9IDBMCiAgICBsZXQgbXV0YWJsZSBhbnMgPSAwTAogICAgbGV0IG11dGFibGUgdG1wID0gMEwKICAgIGxldCBtdXRhYmxlIHRlbXAgPSAwTAogICAgd2hpbGUgaSA+PSAwIGRvCiAgICAgICAgICAgIGlmICgobiAmJiYgKDFMIDw8PCBpKSkgPSAwTCkgdGhlbgogICAgICAgICAgICAgICAgdGVtcCA8LSAwTDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgdGVtcCA8LSAxTDsKICAgICAgICAgICAgaWYgKG12IDw+IHRlbXApIHRoZW4KICAgICAgICAgICAgICAgIGFucyA8LSBhbnMgKyAoKDFMIDw8PCAoaSArIDEpKSAtIDFMKTsKICAgICAgICAgICAgICAgIG12IDwtIG12IF5eXiAxTAogICAgICAgICAgICBtdiA8LSBtdiBeXl4gMUwKICAgICAgICAgICAgYW5zIDwtIGFucyArIDFMCiAgICAgICAgICAgIGkgPC0gaSAtIDEKICAgIHByaW50Zm4gIiVpIiBhbnMKIApmIGggbg==