from math import log2
N = int(input())

if N <= 4:
    print(N)
    exit()

ans = 10**10

def is_ok(arg, j):
    return pow(arg, j) <= N

def meguru_bisect(ng, ok, j):
    while (abs(ok - ng) > 1):
        mid = (ok + ng) // 2
        if is_ok(mid, j):
            ok = mid
        else:
            ng = mid
    return ok

for j in range(2, int(log2(N))+1):
    if pow(2, j) > N:
        break
    i = meguru_bisect(N+1, 2, j)
    k = N-pow(i, j)
    ans = min(ans, i+j+k)

print(ans)