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 Main {
    public static boolean check(long temp) {
        long temp1;
        while (temp > 0) {
            temp1 = temp % 10;
            temp /= 10;
            if (temp1 > 1)
                return false;
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int i = 1;
        int ans = 0;
        for (; 10 * i <= n; i = 10 * i) ;
        for (int j = (i + "").length() - 1; j >= 0; j--) {
            i += Math.pow(10, j - 1);
            if (i > n) {
                i -= Math.pow(10, j - 1);
            }
        }
        String str = i + "";
        int cnt = str.length();
for (int j = 0; j < cnt; j++) {
    if (str.charAt(j) == '1')
        ans += (int) Math.pow(2, cnt - j - 1);
}
        System.out.println(ans);
    }
}