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 data contains the only number *n* (1 ≤ *n* ≤ 10<sup class="upper-index">9</sup>).
For *n* = 10 the answer includes numbers 1 and 10.
10
2
20
3
72
3
99
3
100
4
101
5
102
5
111
7
112
7
745
7
23536
31
1
1
1010011
83
312410141
511
1000000000
512
999999999
511
111111111
511
101010101
341
121212121
511
106341103
383
901556123
511
832513432
511
3
1
732875234
511
7
1
9
1
2
1
11
3
12
3
13
3
101020101
351
111100100
484
110110101
437
100111001
313
100100
36
110100102
421
'''
Jana Goodman6

9c  Hexadecimal's Numbers

'''
import math

TWO_THRU_NINE = {str(_) for _ in range(2, 10)}

def bin_to_10(s):
    return int(s, 2)

def all_dig(d, n):
    return d * n

def put_1s_in(s):
    return ''.join([_ if _ not in TWO_THRU_NINE else '1'
                     for _ in list(s)])

def trailing_1s(s):
    for i in range(1, len(s)):
        if s[i] !=  '0':
            return s[0:i] + all_dig('1', len(s) - i)

def successful(n):
    s = str(n)
    m = len(s)
    all1s = all_dig('1', m)
    all9s = all_dig('9', m)
    if all1s <= s <= all9s:
        return bin_to_10(all1s)
    if all(_ in {'0','1'} for _ in s):
        return bin_to_10(s)
    return bin_to_10(trailing_1s(put_1s_in(s)))


if __name__ == '__main__':
    print(successful(int(input().strip())))
