#include <bits/stdc++.h>
using namespace std;

#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;
#define rep(i, a) for (int i = 0; i < (a); i++ )
#define FOR(i, m, n) for(int i = m; i < n; i++)
 
typedef pair<int,int> P;
typedef long long ll;
 
const int INF = 1001001001;
const int MOD = 1000000007;
const double PI=acos(-1);
//----------------------------------------------------------------

vector<pair<long long, long long> > prime_factorize(long long n) {
    vector<pair<long long, long long> > res;
    for (long long p = 2; p * p <= n; ++p) {
        if (n % p != 0) continue;
        int num = 0;
        while (n % p == 0) { ++num; n /= p; }
        res.push_back(make_pair(p, num));
    }
    if (n != 1) res.push_back(make_pair(n, 1));
    return res;
}

int main(){
    ll N;
    cin >> N;

    auto F = prime_factorize(N);
    int ans = 0;
    for (int i=0; i<F.size(); i++) {
        int j=1;
        while(1) {
            F[i].second -= j;
            ans++;
            if (F[i].second - (j+1) <0) {
                break;
            }
            j++;
        }
    }

    cout << ans << endl;


}
