#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<cmath>
#include<iostream>
#include<vector>
#include<set>
using namespace std;
typedef long long LL;
const int N=1e5+10,mod=1e6;
const int MAX = 1e8 + 10 ;
/*思路:
每次求出最小的质数然后除以,得到新的值继续寻找,直到变成一个质数
其中,注意i*i <= n 可以减少时间
*/
//判断质数的函数
bool prime(int n){
if( n == 1 || n == 2 || n == 3) return true ;
for(int i = 2 ; i*i <= n ; i++){
if(n % i == 0) return false ;
}
return true ;
}
void solve(int n){
int count = 1; //count初始为 1 , 因为最后是一个质数
while(prime(n) == false ){
int i ;
for(i = 2; i*i <= n ; i++){
if(n % i == 0) {
//cout << i <<endl;
count ++ ;
break ;
}
}
n = n / i ; //更新 n 的值
//cout << n <<endl;
//cout <<endl;
}
cout << count << endl;
}
int main(){
int n ;
while(cin >> n)
solve(n) ;
}