#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <numeric>
#include <algorithm>
//#include <iomanip> : 表示桁数, ex) cout << fixed << setprecision(15) << ...

#define pi 3.14159265358979323846
#define rep(i, n) for (int i = 0; i < n; i++)
using ll = long long;
using ld = long double;
using Byte = unsigned char;
using namespace std;

bool isZero = true;

//string ans = "Yes";
int ans = 0;
ll N;
vector<ll> A;

int main() {
	cin >> N;

	vector<ll> prime;
	vector<ll> primeF;
	ll nowP = 1;
	ll tmpN = N;

	
	if (tmpN % 2 == 0) {
		ll F = 0;
		while (tmpN % 2 == 0) {
			F++;
			tmpN /= 2;
		}
		prime.push_back(2);
		primeF.push_back(F);
	}


	while (tmpN > 1) {
		nowP += 2;
		if (tmpN % nowP != 0) continue;
		int F = 0;
		while (tmpN % nowP == 0) {
			F++;
			tmpN /= nowP;
		}
		//prime.push_back(nowP);
		primeF.push_back(F);
	}



	//線形探索...
	for (int p : primeF) {
		ll x = 0;
		while ((x + 1) * (x + 2) / 2 <= p) {
			x++;
		}
		ans += x;
	}


	cout << ans << endl;
	return 0;
}
