N=int(input()) print(2**(bin(N).count("1"))-2) #二の冪乗の足し算何じゃないんですか!?!? #A AND B=0ってことは、同じビットがたってないってことだから、二進数上での繰り上がりは発生しない。(はず) #選ぶか選ばないかをたってるフラグの数やるだけなので、答えは二の冪乗(1は0になる) #立っていないフラグはどうでもいいと思う