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.
def func(a):
    if(len(a)==0):
        return 0
    if(a[0]=="0"):
        return func(a[1:])
    if(len(a.replace('0',''))==0):
        return 0
    #print(a)

    b = int(a)
    sum = 0;
    sum+=2**(len(a)-1)-1
    minc=int(a[0])
    c1 = 0
    for i in range(len(a)):
        if(minc>int(a[i])):
            minc=int(a[i])
        if(a[i]>'1' and minc>0):
            sum+=2**(len(a)-1)
            return sum
        if(a[i]=='0'):
            sum+=max(0, (2**(i-1)-1)*2**(len(a)-i))
            #print("max",(2**(i-1)-1),(2**(i-2)-1)*2**(len(a)-i))
            sum+=func(a[i+1:])+1
            #print("sum",sum)
            return sum

    sum+=2**(len(a)-1)
    return sum
a = input()
b = int(a)
print(func(a))
#sum2=0;
#for i in range(1,b+1):
#    if(len(str(i).replace('0','').replace('1',''))==0):
#        sum2+=1
#print(sum2)
