# def f (a,b) :
# return a+b
#
# print(f(3,4))
#
#
# # 함수의 매개변수가 몇 개 인지 모를때
# def g (*args) :
# result = 0
# for i in args :
# result=result+i
# return result
#
# print(g(1,2,3,4,5))
# def f():
# global n
# global d
# global min
# for i in range(n):
# if d[i] < min:
# min = d[i]
#
# n = int(input())
# d = list(map(int, input().split()))
# min = 2147483648
# f()
# print(min)
# def f(n):
# if n == 0:
# return 'false'
# else:
# return 'true'
#
# n = int(input())
# a = f(n)
# print(a)
# def f():
# global n
# k = 0
# for i in range(2, n-1, 1):
# if n % i == 0:
# k = 1
# break
# if k == 0:
# return 'prime'
# else:
# return 'composite'
#
#
# n = int(input())
# a = f()
# print(a)
# def f():
# global n, d, k
# for i in range(n):
# if d[i] == k:
# return i+1
# return -1
#
#
# n = int(input())
# d = list(map(int, input().split()))
# k = int(input())
# a = int(f())
# print(a)
# def f():
# global n, d, a, b
# m = -2147483648
# p = 0
# for i in range(a-1, b, 1):
# if d[i] > m:
# m = d[i]
# p = i + 1
# return p
#
#
# n = int(input())
# d = list(map(int, input().split()))
# a, b = map(int, input().split())
# k = int(f())
# print(k)
# def f():
# global n, d, k
# for i in range(n):
# if d[i] >= k:
# return i+1
# return n+1
#
# n = int(input())
# d = list(map(int, input().split()))
# k = int(input())
# a = int(f())
# print(a)
# def f(b):
# s = 0
# while b > 0:
# s = s + b % 10
# b = b // 10
# return s
#
#
# n = int(input())
# a = n
# b = n
# while a > 9:
# a = int(f(a))
# print(a)
# n = input()
# print(n[0:3]+n[-1])
# chr(n) 아스키코드->문자
# ord(n) 문자->아스키코드
# n = input()
# for i in range(len(n)):
# print("'%s'"%n[i])
# n = input()
# print(n)
# n = input()
# print(n)
# n = input()
# print(n)
# n = list(input())
# for i in range(len(n)):
# if 64 < ord(n[i]) < 91:
# n[i] = ord(n[i]) + 32
# n[i] = chr(n[i])
# elif 96 < ord(n[i]) < 123:
# n[i] = ord(n[i]) - 32
# n[i] = chr(n[i])
# for i in range(len(n)):
# print(n[i], end='')
# n = input()
# if n == "love":
# print("I love you.")
# n = list(map(str, input().split()))
# for i in range(len(n)):
# print(n[i], end='')
# n = list(input())
# for i in range(len(n)):
# print(chr(ord(n[i]) + 2), end='')
# print()
# for i in range(len(n)):
# print(chr(((ord(n[i]) * 7) % 80) + 48), end='')
# n = input()
# a = n.count('c') + n.count('C')
# b = 0
# for i in range(len(n)-1):
# if n[i:(i+2)] == 'cc' or n[i:(i+2)] == 'cC' or n[i:(i+2)] == 'Cc' or n[i:(i+2)] == 'CC':
# b = b + 1
# print(a)
# print(b)
# n = input()
# a = 0
# for i in range(n.count('t')):
# b = a
# a = n[a:].index('t')
# a = a + b + 1
# print(a, end=' ')
# n = input()
# p = 0
# for i in range(len(n)-3):
# if n[i:i+4] == "love":
# p = p + 1
# print(p)
# a, b = map(int, input().split())
# if a > b:
# t = a
# a = b
# b = t
# print(a, b)
# n = list(input())
# s = 0
# for i in range(len(n)):
# s = s + int(n[i])
# if s % 3 == 0:
# print(1)
# else:
# print(0)
# a = input()
# b = input()
# c = input()
# if a[-1] == b[0] and b[-1] == c[0] and c[-1] == a[0]:
# print('good')
# else:
# print('bad')
# n = input()
# k = n.index('x')
# a = int(n[:k])
# b = int(n[k+2:])
# t = b/a
# if n[k+1] == '+':
# t = -t
# print("%.2f"%t)
# n = input()
# k = n.index('x')
# p = n.index('=')
# a = int(n[:k])
# b = int(n[k+2:p])
# c = int(n[p+1:])
# if n[k+1] == '+':
# t = (c-b)/a
# else:
# t = (b+c)/a
# print("%.2f"%t)
# def f(n) :
# if n==0 :
# return 0
# return f(n-1)+n
#
# print(f(10))
# def f(n) :
# if n == 1:
# print(1)
# return 1
# f(n-1)
# print(n)
# return n
#
# n = int(input())
# f(n)
# def f(n) :
# if n == 1:
# print(1)
# return 1
# print(n)
# f(n-1)
#
# n = int(input())
# f(n)
# def f(k) :
# global b
# if k > b:
# return 1
# if k % 2 == 1:
# print(k, end=' ')
# f(k+2)
# else:
# f(k+1)
#
# a, b = map(int, input().split())
# f(a)
# import sys
# limit_number=20000
# sys.setrecursionlimit(limit_number)
#
# def f(k, total=0):
# if k == 0:
# return total
# else:
# return f(k-1, total+k)
#
#
# n = int(input())
# print(f(n))
##############################
# n=int(input())
#
# def f(x) :
# if x==1 :
# return 1
# else :
# return ((x+1)//2)*((x+1)//2)+f(x//2)*2
#
# print(f(n))
############################
# def f(k, total=1):
# if k == 0:
# return total
# else:
# return f(k-1, total*k)
#
#
# n = int(input())
# print(f(n))
# def f(k):
# global d
# if d[k] != 0:
# return d[k]
# if k == 2 or k == 1:
# d[k] = 1
# return 1
# else:
# d[k] = (f(k-2)+f(k-1)) % 10009
# return d[k]
#
# d = [0] * 300
# n = int(input())
# print(f(n))
def f(n, p):
global q
if n >= 2:
q = p + 1
f(n//2, p+1)
return q
def g(n, k):
global w
if n % 2 == 0:
w = 10 * w
else:
w = 10 * w + 1
if k == 0:
return 0
f(n//2, k-1)
q = 0
w = 0
d = [0] * 40
n = int(input())
if n < 2:
print(n)
else:
a = f(n, q)
print(a)



