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 itertools

import time
def timer(f):
    def tmp(*args, **kwargs):
        t = time.time()
        res = f(*args, **kwargs)
        print("Время выполнения функции: %f" % (time.time()-t))
        return res

    return tmp

#n = int(input())

def realAle(string):
    string = string.lstrip('0')
    if len(string)==0:
        return 1
    if string == "1":
        return 2
    if int(string[0])>1:
        return 2**len(string)
    else:
        return (2**(len(string)-1))+realAle(string[1:])



def real(string):
    string = string.lstrip('0')
    if len(string)==0:
        return 1
    if string == "1":
        return 1
    if int(string[0])>1:
        return 2**len(string)-1
    else:
        return (2**(len(string)-1))-1+realAle(string[1:])



def naive(k):
    count = 0
    for i in range(1, k+1):
        s = str(i)
        b = True
        for j in range(len(s)):
            if s[j]!='0' and s[j]!='1':
                b = False
        if b:
            #print(i)
            count+=1
    return count


for i in range(1, 1):
    if naive(i)!=real(str(i)):
        print(i,  naive(i), real(str(i)) )
        pass

print(real(input()))