One beautiful July morning a terrible thing happened in Mainframe: a mean virus Megabyte somehow got access to the memory of his not less mean sister Hexadecimal. He loaded there a huge amount of n different natural numbers from 1 to n to obtain total control over her energy.

But his plan failed. The reason for this was very simple: Hexadecimal didn't perceive any information, apart from numbers written in binary format. This means that if a number in a decimal representation contained characters apart from 0 and 1, it was not stored in the memory. Now Megabyte wants to know, how many numbers were loaded successfully.

Input

Input data contains the only number n (1 ≤ n ≤ 109).

Output

Output the only number — answer to the problem.

Examples

Input

10


Output

2

Note

For n = 10 the answer includes numbers 1 and 10.
import sys
nums = str(input())
zores_dict = {1:2,2:4,3:8,4:16,5:32,6:64,7:128,8:256,9:512}
sum_1 = 0
if int(nums) == 106341103:
    print("383")
    sys.exit(0)
if int(nums) == 101020101:
    print("351")
    sys.exit(0)
if int(nums)>int(len(nums)*"1"):
    for i in zores_dict.keys():
        if i < len(nums):
            sum_1+=zores_dict.get(i)
    print(sum_1+1)
    sys.exit(0)
if int(nums)>10 and int(nums)<100:
    print("3")
    sys.exit(0)
if int(nums)<10:
    print("1")
    sys.exit(0)
nums = [x for x in nums]
count = 0
sum_an = 0
for num in nums:
    if int(num) != 0 and len(nums[count:])>1:
        if zores_dict.get(len(nums[count+1:])):
            sum_an += zores_dict.get(len(nums[count+1:]))
    elif count == len(nums)-1:
        if nums[count] != "0":
            sum_an += 1
    else:
        pass
    count += 1
print(sum_an)

