#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<numeric>
#include<cmath>

std::vector<long long> enum_divisors(long long N) {
    std::vector<long long> res;
    for (long long i = 1; i * i <= N; ++i) {
        if (N % i == 0) {
            res.push_back(i);
            if (N/i != i) res.push_back(N/i);
        }
    }
    std::sort(res.begin(), res.end());
    return res;
}

std::vector<std::pair<long long, long long> > prime_factorize(long long N) {
    std::vector<std::pair<long long, long long> > res;
    for (long long a = 2; a * a <= N; ++a) {
        if (N % a != 0) continue;
        long long ex = 0;

        while (N % a == 0) {
            ++ex;
            N /= a;
        }
        res.push_back({a, ex});
    }

    if (N != 1) res.push_back({N, 1});
    return res;
}

int main(void){
    long long N;
    std::cin >> N;
    int cnt=0;

    const auto &res = prime_factorize(N);
    long long pre = 0;

    for (auto p : res) {
        int e=1;
        for (int i = 1; i <= p.second; i+=e){
            e++;
            cnt++;
            //std::cout << p.first << " " << p.second << " " << e << " " << i << " " << cnt << std::endl;
        }
    }

    std::cout << cnt << std::endl;

    return 0;
}