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 whatever; // don't place package name! */
 
import java.util.*;
import java.lang.*;
import java.io.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
 
/* Name of the class has to be "Main" only if the class is public. */
public class bbg
{
	public static int result;
 
public static ArrayList<Integer> [] graph;
 
public static int[]cats;
 
public static int vizitat[];
public static int x;
//public static HashMap<String, Integer> map2;
 
 
	public static void main (String[] args) throws java.lang.Exception
{
 
Scanner input=new Scanner(System.in);
 
HashMap<Integer, Integer> contor1= new HashMap<Integer, Integer>();
HashMap<Integer, Integer> contor2= new HashMap<Integer, Integer>();


HashMap<Integer, Integer> map= new HashMap<Integer, Integer>();
HashMap<Integer, Integer> map2= new HashMap<Integer, Integer>();
HashMap<String, Integer> combinari= new HashMap<String, Integer>();
 
 
		
		
		
		int n=input.nextInt();
		
		int contor=0;
		
		for(int i=1;i<=1000;i++) if(bazadoi(i)<=n*1L) contor++;
		
		System.out.println(contor);

		
		
		
		
		
		
		}
		
		public static Long bazadoi(int nr){
		
		int part=nr;
		String rest="";
		
		while(nr>=2){
		
		 rest+=String.valueOf(nr%2);
		nr/=2;
		
		
		}
		rest+=String.valueOf(nr);
		

		
		String reverse = new StringBuffer(rest).reverse().toString();
		
		Long raspuns=Long.valueOf(reverse);
		
		
			return raspuns;
			
			
		
		
		}
		
		
		}