N = int(input()) if N == 1: exit(print(0)) # k 乗根 def sqrt(n: int, k = 2): l = k - 1 if not n: return 0 y = 1 << (n.bit_length() + l) // k x = y + 1 while y < x: x = y y = (l * x + n // (x ** l)) // k return x # n == i**j + k # 2**60 = 10**18 なので j の上限は 60 くらい # n == 1**0 + (n - 1) ans = N flag = False for j in range(1, 62): i = sqrt(N, j) if i == 1: j = 0 flag = True k = N - i**j X = i + j + k if X < ans: ans = X if flag: break print(ans)