#define f first
#define s second
#define loop(a,b) for(int i=a;i<b;i++)
#define vi vector<int>
#define vvi vector<vi>
#define vl vector<ll>
#define vvl vector<vector<ll> >
#define mp make_pair
#define pb push_back
#define ppb pop_back
#define ll long long
#define pii pair<int,int>
#define vpii vector<pair<int,int> >
#define loop2(a,b) for(int j=a;j<b;j++)
#define str_in cin.ignore(numeric_limits<streamsize>::max(), '\n')
#define sz(a) int(a.size())
#define displaymatrix(a,m,n) for(int i=0;i<m;i++)\
{for(int j=0;j<n;j++)cout<<a[i][j]<<" ";cout<<endl;}
#define printarray(a,n) for(int i=0;i<n;i++){cout<<a[i]<<" ";}nl;
#define vinput(a,n) vl a(n);loop(0,n)cin>>a[i]
#define ainput(a,n) loop(0,n)cin>>a[i]
#define nl cout << "\n";
//#define all(c) c.begin(),c.end()
#define tr(container,it)\
for(__typeof(container.begin()) it=container.begin();it!=container.end();it++)
#include<bits/stdc++.h>

using namespace std;
int visited[200005];
int parent[200005];
queue<int> bfsq;

const int mod=1e+9+7;

void bfs(vvi& g, int node){
    bfsq.push(node);
    visited[node] = 1;
    while(sz(bfsq) > 0){
        int q = bfsq.front();
        bfsq.pop();
        for (auto x:g[q]){
            if (visited[x]) continue;
            //            cout << q << " " << x << " ";
            bfsq.push(x);
            visited[x] = 1;
            parent[x] = q;
        }
        //        printf("\n");
    }
}

vi pfact(ll n)
{
    int fac = 0;
    int ct = 0;
    vi pow;
    while (n % 2 == 0)
    {
        if (ct == 0) fac++;
        n = n/2;
        ct++;
    }
    pow.pb(ct);
    for (int i = 3; i <= sqrt(n); i = i + 2)
    {
        ct = 0;
        while (n % i == 0)
        {
            if (ct==0)fac++;
            n = n/i;
            ct++;
        }
        pow.pb(ct);
    }
    if (n > 2) {fac++;pow.pb(1);}
    return(pow);
}

void solve(){
    ll n;cin>>n;
    vi pows = pfact(n);
    int ctr = 0;
    int num = 0;
    for (int p:pows){
        while(p>=num+1){
            ctr++;
            num++;
            p -= num;
        }
        num = 0;
    }
    cout << ctr << endl;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    int t=1;
    //    cin>>t;
    while(t--) solve();
    return 0;
}


