#include using namespace std; int main(){ int N; cin >> N; vector dp(N + 1, -1); auto dfs = [&](auto dfs, int now) -> long long{ if(dp[now] != -1) return dp[now]; if(now == 1) return dp[now] = 0; vector d; for(int i = 1; i * i <= now; i++){ if(now % i == 0){ d.push_back(i); if(i * i != now) d.push_back(now / i); } } long long mi = 1000000000; for(int i = 0; i < (int)d.size(); i++){ if(d[i] == 1) continue; mi = min(mi, d[i] + dfs(dfs, now / d[i])); } return dp[now] = mi; }; cout << dfs(dfs, N) << endl; }