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 sys
from math import sqrt, gcd, ceil, log, floor
# from bisect import bisect, bisect_left
from collections import defaultdict, Counter, deque
from heapq import heapify, heappush, heappop
input = sys.stdin.readline
read = lambda: list(map(int, input().strip().split()))

# sys.setrecursionlimit(200000)

def main():
	# ans_ = []
	def f(x):
		ans = 0
		arr = [1]
		while arr:
			ans += len(arr)
			tem = []
			for i in arr:
				if i*10 <= n:tem.append(i*10)
				if i*10+1 <= n:tem.append(i*10 + 1)
			arr = tem
		return(ans)

	n = int(input())
	
	print(f(1))
	# 	ans_.append(str(ans))
	# print(("\n").join(ans_))
if __name__ == "__main__":
	main()