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 HEXA_DECIMAL_NUMBER {
 
	public static void main(String[] args) {
 
		Scanner nik = new Scanner(System.in);
		int n = nik.nextInt();
 
		int sum = 0;
 
		for (int i = 1; i < 1024; i++) {
			int s = Integer.parseInt(Integer.toBinaryString(i));
			if (n >= s)
				sum++;
			else
				break;
		}
		System.out.println(sum);
 
		// int s = 1;
		// int c = 0;
		// while (s * 10 < n) {
		// c++;
		// s *= 10;
		// }
		// System.out.println(c);
		// int sum = 0;
		// for (int i = s; i <= n; i++) {
		// if (allzero(i))
		// sum++;
		// }
		//
		// int p = 1;
		// while (c-- > 0) {
		// sum += p;
		// p *= 2;
		// }
		//
		// System.out.println(sum);
		// }
		//
		// public static boolean allzero(int i) {
		//
		// boolean b = true;
		//
		// while (i > 0) {
		// int temp = i % 10;
		// if (temp != 0 && temp != 1) {
		// b = false;
		// break;
		// }
		// i/=10;
		// }
		//
		// return b;
	}
}