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.
//package main;

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException {
        Reader.init(System.in);
        //StringBuffer outBuffer = new StringBuffer();
        
        int N = Reader.nextInt();
        int[] digits = new int[10];
        
        int i = 0;
        while(N > 0) {
            digits[i] = N % 10;
            N /= 10;
            i++;
        }
        
        boolean flag = false;
        for(int x = digits.length-1; x >= 0; x--) {
            if(digits[x] > 1) {
                flag = true;
            }
            if(flag){
                digits[x] = 1;
            }
        }
        
        System.out.print(BinToDec(digits));
    }
    static int BinToDec(int[] digits){
        int count = 0;
        for(int i = digits.length-1; i >= 0; i--){
            count *= 2;
            if(digits[i] == 1){
                count++;
            }
        }
        return count;
    }
}

// Class for buffered reading int and double values 
// From: http://www.cpe.ku.ac.th/~jim/java-io.html
class Reader {
    static BufferedReader reader;
    static StringTokenizer tokenizer;

    //call this method to initialize reader for InputStream
    static void init(InputStream input) {
        reader = new BufferedReader(
                     new InputStreamReader(input) );
        tokenizer = new StringTokenizer("");
    }

    //get next word
    static String next() throws IOException {
        while ( ! tokenizer.hasMoreTokens() ) {
            //TODO add check for eof if necessary
            tokenizer = new StringTokenizer(
                   reader.readLine() );
        }
        return tokenizer.nextToken();
    }

    static int nextInt() throws IOException {
        return Integer.parseInt( next() );
    }
	
    static double nextDouble() throws IOException {
        return Double.parseDouble( next() );
    }
}