import math 



N = int(eval(input()))

lst =[]

#N = a*bとする。　ここで、a<=bが成り立つ。

#√a　の全探索

length= math.ceil(math.sqrt(N))

for i in range(length):

    if(N %(i+1) == 0):

        lst.append(i+1)

a = max(lst)

b = round(N/a)

ans = a+b -2

print(ans)
import math 



n = int(eval(input()))

a=0

b=0

root_n  = math.sqrt(n)

#繰り上げ

root_n = math.ceil(root_n)

yakusuu =[]

for i in range(1,root_n+1):

    if(n%i == 0):

        yakusuu.append(i)

a = max(yakusuu)

b = n / a

print((int(a+b-2)))

import math

N = int(eval(input()))
lst = []
# N = a*bとする。　ここで、a<=bが成り立つ。
# √a　の全探索
length = math.ceil(math.sqrt(N))
for i in range(length):
    if N % (i + 1) == 0:
        lst.append(i + 1)
a = max(lst)
b = round(N / a)
ans = a + b - 2
print(ans)

import math

n = int(eval(input()))
a = 0
b = 0
root_n = math.sqrt(n)
# 繰り上げ
root_n = math.ceil(root_n)
yakusuu = []
for i in range(1, root_n + 1):
    if n % i == 0:
        yakusuu.append(i)
a = max(yakusuu)
b = n / a
print((int(a + b - 2)))

-N = int(eval(input())) -lst = [] -# N = a*bとする。　ここで、a<=bが成り立つ。 -# √a　の全探索 -length = math.ceil(math.sqrt(N)) -for i in range(length): -    if N % (i + 1) == 0: -        lst.append(i + 1) -a = max(lst) -b = round(N / a) -ans = a + b - 2 -print(ans) +n = int(eval(input())) +a = 0 +b = 0 +root_n = math.sqrt(n) +# 繰り上げ +root_n = math.ceil(root_n) +yakusuu = [] +for i in range(1, root_n + 1): +    if n % i == 0: +        yakusuu.append(i) +a = max(yakusuu) +b = n / a +print((int(a + b - 2)))