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

#define MAX 1000005
vector<int> primes;
bool isprime[MAX];

void sieve(int n){
	memset(isprime, true, sizeof(isprime));
	isprime[0] = isprime[1] = false;
	int p;
	for( p=2; p*p<=n; p++){
		if(isprime[p]){
			primes.push_back(p);
			for(int i=p*2; i<=n;i+=p){
				isprime[i] = false;
			}
		}
	}
	for(int i=p; i<=n;i++){
		if(isprime[i]) primes.push_back(i);
	}
}



typedef long long int ll;

int main(){
	sieve(MAX);
	int n; cin>>n;
	int ans = 0;
	for(auto x: primes){
		int v =x;
		int p = 1;
		while(n%(int)(pow(v,p))==0){
			n/=(int)pow(v,p);
			p+=1;
			ans+=1;
		}
	}
	if (n>1) ans++;
	printf("%d",ans);
}
