#include #include using namespace std; long long kpow(long long x, long long n) { if (n == 0) return 1; long long t = 1; while (n) { if (n & 1) t *= x; n >>= 1; x *= x; } return t; } int main() { long long n; scanf("%lld", &n); long long ans = n + 1; long long i = n, j = 1, k = 0; long long lst=n+1; while (1) { j++; i=pow(n,1.0/j); k=n-kpow(i,j); ans=min(ans,i+j+k); if(i+j+k>ans) { printf("%lld\n",ans); break; } // if(ans==lst) // { // break; // } // lst=ans; } return 0; }