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)