def make_divisors(n):

    """自然数nの約数を列挙したリストを出力する

    計算量: O(sqrt(N))

    入出力例: 12 -> [1, 2, 3, 4, 6, 12]

    """

    divisors = []

    for k in range(1, int(n**0.5) + 1):

        if n % k == 0:

            divisors.append(k)

            if k != n // k:

                divisors.append(n // k)

    divisors = sorted(divisors)

    return divisors





n = int(eval(input()))

ans = make_divisors(n)

res = 10**18

for i in range(len(ans)):

    tmp = ans[i] + n // ans[i] - 2

    res = min(tmp, res)

print(res)
def make_divisors(n: int) -> list:

    """自然数nの約数を列挙したリストを出力する

    計算量: O(sqrt(N))

    入出力例: 12 -> [1, 2, 3, 4, 6, 12]

    """

    divisors = []

    for k in range(1, int(n ** 0.5) + 1):

        if n % k == 0:

            divisors.append(k)

            if k != n // k:

                divisors.append(n // k)

    divisors = sorted(divisors)

    return divisors





n = int(eval(input()))

div = make_divisors(n)

ans = 10 ** 18

for i in div:

    ans = min(ans, i + n // i - 2)

print(ans)
def make_divisors(n):
    """自然数nの約数を列挙したリストを出力する
    計算量: O(sqrt(N))
    入出力例: 12 -> [1, 2, 3, 4, 6, 12]
    """
    divisors = []
    for k in range(1, int(n**0.5) + 1):
        if n % k == 0:
            divisors.append(k)
            if k != n // k:
                divisors.append(n // k)
    divisors = sorted(divisors)
    return divisors


n = int(eval(input()))
ans = make_divisors(n)
res = 10**18
for i in range(len(ans)):
    tmp = ans[i] + n // ans[i] - 2
    res = min(tmp, res)
print(res)

def make_divisors(n: int) -> list:
    """自然数nの約数を列挙したリストを出力する
    計算量: O(sqrt(N))
    入出力例: 12 -> [1, 2, 3, 4, 6, 12]
    """
    divisors = []
    for k in range(1, int(n**0.5) + 1):
        if n % k == 0:
            divisors.append(k)
            if k != n // k:
                divisors.append(n // k)
    divisors = sorted(divisors)
    return divisors


n = int(eval(input()))
div = make_divisors(n)
ans = 10**18
for i in div:
    ans = min(ans, i + n // i - 2)
print(ans)

-def make_divisors(n): +def make_divisors(n: int) -> list: -ans = make_divisors(n) -res = 10**18 -for i in range(len(ans)): -    tmp = ans[i] + n // ans[i] - 2 -    res = min(tmp, res) -print(res) +div = make_divisors(n) +ans = 10**18 +for i in div: +    ans = min(ans, i + n // i - 2) +print(ans)