#include long long int pow(long long int a, long long int n) { long long int res = 1; while (n > 0) { if (n % 2 > 0) res = res * a; a = a * a; n /= 2; } return res; } int f(long long int a, long long int b, long long int c) { if (a == 0) return 1; long long int res = 1; while (b > 0) { if (b % 2 > 0) { if (res > c / a) return 0; res = res * a; } if (a > c / a && b != 1) return 0; a = a * a; b /= 2; } return 1; } long long int root(long long int n, long long int r) { if (r > 3) { long long int i; for (i = 0;; i++) { if (f(i, r, n) == 0) return i - 1; } } long long int min, mid, max; min = -1; max = 1000000009; if (r == 3) max = 1000006; while (max - min > 1) { mid = (max + min) / 2; if (pow(mid, r) > n) max = mid; else min = mid; } return min; } int main() { long long int n; scanf("%lld", &n); long long int i, j, k; long long int ans = n; for (j = 2; j < 100; j++) { i = root(n, j); k = n - pow(i, j); if (ans > i + j + k) ans = i + j + k; } printf("%lld\n", ans); return 0; }