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 java.util.Scanner;

public class CF9C {

    static int a[] = {0, 1, 3, 7, 15, 31, 63, 127, 255, 511};
    static int ans = 0;
    static int num;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int len = s.length();
        ans = a[len - 1];
        num = Integer.parseInt(s);
        count(len - 1);
        System.out.println(ans);
    }

    static void count(int i) { // i is power
        int m = 1 << i;
        boolean b = true;
        while (parseMask(m) <= num) {
            ans++;
            m++;
        }
    }

    static int parseMask(int m) {
        int res = 0;
        int p = 1;
        int i = 1;
        while (p <= m) {
            if ((m & p) != 0) {
                res += i;
            }
            p <<= 1;
            i *= 10;
        }
        return res;
    }
}
