import sys

N = int(sys.stdin.readline().rstrip())



def make_divisors(n):

    divisors = []

    for i in range(1, int(n**0.5) + 1):

        if n % i == 0:

            divisors.append(i)

            if i != n // i:

                divisors.append(n // i)

    divisors.sort()

    return divisors



def prime_factorize(n):

    a = []

    while n % 2 == 0:

        a.append(2)

        n //= 2

    f = 3

    while f * f <= n:

        if n % f == 0:

            a.append(f)

            n //= f

        else:

            f += 2

    if n != 1:

        a.append(n)

    a = set(a)

    if len(a) == 1:

        return True

    else:

        return False



divisors = make_divisors(N)

ans = 0

for d in divisors:

    if prime_factorize(d) and N % d == 0:

        N //= d

        ans += 1

print(ans)
import sys

N = int(sys.stdin.readline().rstrip())



def prime_factorize(n):

    a = []

    while n % 2 == 0:

        a.append(2)

        n //= 2

    f = 3

    while f * f <= n:

        if n % f == 0:

            a.append(f)

            n //= f

        else:

            f += 2

    if n != 1:

        a.append(n)

    

    return a



primes = prime_factorize(N)



from collections import Counter



cnts = Counter(primes)

ans = 0

for p, cnt in list(cnts.items()):

    tmp = 1

    while cnt - tmp >= 0:

        cnt -= tmp

        tmp += 1

        ans += 1

print(ans)
import sys

N = int(sys.stdin.readline().rstrip())


def make_divisors(n):
    divisors = []
    for i in range(1, int(n**0.5) + 1):
        if n % i == 0:
            divisors.append(i)
            if i != n // i:
                divisors.append(n // i)
    divisors.sort()
    return divisors


def prime_factorize(n):
    a = []
    while n % 2 == 0:
        a.append(2)
        n //= 2
    f = 3
    while f * f <= n:
        if n % f == 0:
            a.append(f)
            n //= f
        else:
            f += 2
    if n != 1:
        a.append(n)
    a = set(a)
    if len(a) == 1:
        return True
    else:
        return False


divisors = make_divisors(N)
ans = 0
for d in divisors:
    if prime_factorize(d) and N % d == 0:
        N //= d
        ans += 1
print(ans)

import sys

N = int(sys.stdin.readline().rstrip())


def prime_factorize(n):
    a = []
    while n % 2 == 0:
        a.append(2)
        n //= 2
    f = 3
    while f * f <= n:
        if n % f == 0:
            a.append(f)
            n //= f
        else:
            f += 2
    if n != 1:
        a.append(n)
    return a


primes = prime_factorize(N)
from collections import Counter

cnts = Counter(primes)
ans = 0
for p, cnt in list(cnts.items()):
    tmp = 1
    while cnt - tmp >= 0:
        cnt -= tmp
        tmp += 1
        ans += 1
print(ans)

- - -def make_divisors(n): -    divisors = [] -    for i in range(1, int(n**0.5) + 1): -        if n % i == 0: -            divisors.append(i) -            if i != n // i: -                divisors.append(n // i) -    divisors.sort() -    return divisors -    a = set(a) -    if len(a) == 1: -        return True -    else: -        return False +    return a -divisors = make_divisors(N) +primes = prime_factorize(N) +from collections import Counter + +cnts = Counter(primes) -for d in divisors: -    if prime_factorize(d) and N % d == 0: -        N //= d +for p, cnt in list(cnts.items()): +    tmp = 1 +    while cnt - tmp >= 0: +        cnt -= tmp +        tmp += 1