

K = int(eval(input()))



N = 10**6

dp = [1] * (N+1)

dp[0] =  dp[1] =  0



def pw(j,i):

    while(j%i==0):

        j //= i

        

    if j == 1:

        return True

    else:

        return False



for i in range(2,N+1):

    if dp[i]:

        for j in range(i*i, N+1, i):

            #if not pw(j,i):

            dp[j] = 0

ans = 0

for n in range(N):

    i = 0

    while(1):

        i+=1

        v = pow(n,i)

        if (dp[n] == 1 and K%v==0):

            K //= v

            ans += 1

        else:

            break



for n in range(N):

    while(dp[n] == 1 and K%n==0):

        K //= n



#print (K)

if K!=1:

    ans += 1

print (ans)







N = int(eval(input()))

def factorize(N):

    n = N

    r = []

    for i in range(2,int(N**0.5)+1): # intに変換すること

        cnt = 0

        while(n%i==0):

            cnt += 1

            n //= i #  整数除算(//)を使うこと

        if cnt!=0:

            r.append((i,cnt))

    if n!=1:

        r.append((n,1))

    return r



ans = 0

for _, cnt in factorize(N):

    i = 1

    while(i <= cnt):

        cnt-=i

        i+=1

        ans+=1

print (ans)

K = int(eval(input()))
N = 10**6
dp = [1] * (N + 1)
dp[0] = dp[1] = 0


def pw(j, i):
    while j % i == 0:
        j //= i
    if j == 1:
        return True
    else:
        return False


for i in range(2, N + 1):
    if dp[i]:
        for j in range(i * i, N + 1, i):
            # if not pw(j,i):
            dp[j] = 0
ans = 0
for n in range(N):
    i = 0
    while 1:
        i += 1
        v = pow(n, i)
        if dp[n] == 1 and K % v == 0:
            K //= v
            ans += 1
        else:
            break
for n in range(N):
    while dp[n] == 1 and K % n == 0:
        K //= n
# print (K)
if K != 1:
    ans += 1
print(ans)

N = int(eval(input()))


def factorize(N):
    n = N
    r = []
    for i in range(2, int(N**0.5) + 1):  # intに変換すること
        cnt = 0
        while n % i == 0:
            cnt += 1
            n //= i  #  整数除算(//)を使うこと
        if cnt != 0:
            r.append((i, cnt))
    if n != 1:
        r.append((n, 1))
    return r


ans = 0
for _, cnt in factorize(N):
    i = 1
    while i <= cnt:
        cnt -= i
        i += 1
        ans += 1
print(ans)

-K = int(eval(input())) -N = 10**6 -dp = [1] * (N + 1) -dp[0] = dp[1] = 0 +N = int(eval(input())) -def pw(j, i): -    while j % i == 0: -        j //= i -    if j == 1: -        return True -    else: -        return False +def factorize(N): +    n = N +    r = [] +    for i in range(2, int(N**0.5) + 1):  # intに変換すること +        cnt = 0 +        while n % i == 0: +            cnt += 1 +            n //= i  #  整数除算(//)を使うこと +        if cnt != 0: +            r.append((i, cnt)) +    if n != 1: +        r.append((n, 1)) +    return r -for i in range(2, N + 1): -    if dp[i]: -        for j in range(i * i, N + 1, i): -            # if not pw(j,i): -            dp[j] = 0 -for n in range(N): -    i = 0 -    while 1: +for _, cnt in factorize(N): +    i = 1 +    while i <= cnt: +        cnt -= i -        v = pow(n, i) -        if dp[n] == 1 and K % v == 0: -            K //= v -            ans += 1 -        else: -            break -for n in range(N): -    while dp[n] == 1 and K % n == 0: -        K //= n -# print (K) -if K != 1: -    ans += 1 +        ans += 1