#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <iostream>
#include <vector>

using namespace std;
const int maxn = 4e4;
bool isprime[maxn];
vector<int>prime;

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

int numberofprimefactor(int number) {
	int answer = 0;
	for (int i = 0; i < prime.size(); i++) {
		int factor = prime[i];
		if (number < factor) {
			break;
		}
		int exponent = 0;
		while (number % factor == 0) {
			exponent++;
			number /= factor;
			// printf("num:%d\n", number);
			// printf("yingzi:%d\n", factor);
		}
		answer += exponent;
	}
	if (number > 1) { //如果 number 大于 1,说明 number 本身是一个(大于4e4的)质数,将 answer 加 1
		answer += 1;
	}
	return answer;
}

int main() {

	initial();//shai fa

	/*int k;
	while (scanf("%d", &k)!=EOF) {
		printf("%d\n", prime[k - 1]);
	}*/
	int number;
	while (scanf("%d", &number) != EOF) {
		printf("%d\n", numberofprimefactor(number));
	}
	return 0;
}