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.
ji=raw_input()
m=len(ji)
mo=False
#if ji[-1]=="1":
 #  mo=True
  # n=""
   #for i in xrange(m-1):
    #    n+=ji[i]
#else:
    #n=ji

#if mo==True:        
 #   n+="0"
  #  ans=1
#else:
 #   ans=0
ans=0
n=ji

p=m-1

def maxbln(n):
    s=""
    fh=0
    b=False
    for i in xrange(len(n)):
        if int(n[i])>1:
            s+="1"
            fh=i
            b=True
            break
        elif int(n[i])==1:
            s+="1"
        else:
            s+="0"
    if b==True:        
      for i in xrange(fh+1,len(n)):
        s+="1"
    return s

 
n=maxbln(n)

t="1"
for i in xrange(len(n)-1):
    t+="0"


            
while p>1:
    
    ans+=2**(p-1)
    #print m
    p-=1
 
ans+=1

c=1
b=True
if n=="1":
    
  print 1
elif n==t:
    print ans+1
else:
 bps=[]
 a1=False
 
 for i in xrange(1,len(n)):
    if n[i]=="1":
        a1=True
        if a1==True:
            c=c*2
       
         
       
    else:
        if a1==True:
            bps.append(i)
            c=c*2
 kuns=0
 for mp in bps:
        he=len(n)-1-mp
        kuns+=(1<<he)
    
 ans=ans+c
 
 print ans-kuns

