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.*;
import java.io.*;
 
	
	 
public class Main {
	
	public static void main(String args[]) {
		InputReader obj = new InputReader(System.in);
		
		String n = obj.next();
		int i=1;
		int j=0;
		String str = Integer.toBinaryString(i);
		while(true) {
			if(str.equals(n)) {
				System.out.println(i);
				break;
			}
			else if(str.length()==n.length()) {
				j=str.compareTo(n);
				if(j<0) {
					i++;
					str=Integer.toBinaryString(i);;
				}
				else {
					System.out.println(i-1);
					break;
				}
			}
			else if(str.length()<n.length()) {
				i++;
				str=Integer.toBinaryString(i);
			}
			else {
				System.out.println(i-1);
				break;
			}
		}
		
	}
	public static class InputReader {
	    public BufferedReader reader;
	    public StringTokenizer tokenizer;
 
	    public InputReader(InputStream stream) {
	        reader = new BufferedReader(new InputStreamReader(stream), 32768);
	        tokenizer = null;
	    }
 
	    public String next() {
	        while (tokenizer == null || !tokenizer.hasMoreTokens()) {
	            try {
	                tokenizer = new StringTokenizer(reader.readLine());
	            } catch (IOException e) {
	                throw new RuntimeException(e);
	            }
	        }
	        return tokenizer.nextToken();
	    }
 
	    public int nextInt() {
	        return Integer.parseInt(next());
	    }
 
	    public long nextLong() {
	        return Long.parseLong(next());
	    }
	    
 
	}
}