#include <vector>
#include <cmath>

const int Max = 1e5;
using namespace std;

bool isprime[Max];
vector<int>prime;

void Inition()
{
    for(int i=0;i<Max;i++)
        isprime[i]=true;
    isprime[0]=false;isprime[1]=true;
    for(int i=2;i<Max;i++)
    {
        if(!isprime[i]) continue;
        prime.push_back(i);
        for(int j =i*i;j<Max;j+=i)
            isprime[j]=false;
    }
}

int main()
{
    Inition();
    int n;
    while(cin>>n){
        int ans=0;
        // 注意这里的条件,当prime[i]>n时,后面的while循环就没有意义了
        for(int i=0;i<prime.size() && prime[i]<n;i++){   
            while(n%prime[i]==0){
                n/=prime[i];
                ans++;
            }
        }
        if(n>1) ans++;
        cout<<ans<<endl;
    }
    return 0;
}