from collections import defaultdict

import decimal

import sys

input = sys.stdin.readline





def prime_factor_count(n):

    def count(n, i):

        cnt = 0

        while n % i == 0:

            cnt += 1

            n //= i

        return n, cnt



    d = {}

    if n == 1:

        return d



    n, cnt = count(n, 2)

    d[2] = cnt



    lst = [2]

    for num in range(3, int(n ** 0.5) + 1, 2):

        if n == 1:

            break

        for p_num in lst:

            if num % p_num == 0:

                break

            elif p_num * p_num > num:

                lst.append(num)

                n, cnt = count(n, num)

                d[num] = cnt

                break

    else:

        if n != 1:

            d[n] = 1

    return d







def main():

    n = int(eval(input()))

    d = prime_factor_count(n)



    cnt = 0

    tmp_n = 0

    for k, v in list(d.items()):

        exp_cnt = 1

        while 1:

            if exp_cnt > v:

                break

            else:

                if tmp_n % (tmp_exp := k ** exp_cnt) == 0:

                    tmp_n //= tmp_exp

                    cnt += 1

                    v -= exp_cnt

                    exp_cnt += 1

    else:

        if n == tmp_n:

            cnt += 1

    print(cnt)





if __name__ == '__main__':

    main()

import sys

input = sys.stdin.readline





def prime_factor_count(n):

    def count(n, p):

        cnt = 0

        while n % p == 0:

            n //= p

            cnt += 1

        np_cnt = 1

        while (cnt := cnt - np_cnt) >= 0:

            np_cnt += 1

        return n, np_cnt - 1



    n, cnt = count(n, 2)



    if n == 1:

        return cnt



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

        n, tmp_cnt = count(n, i)

        cnt += tmp_cnt

        if n == 1:

            break

    else:

        cnt += 1



    return cnt





def main():

    n = int(eval(input()))

    ans = prime_factor_count(n)

    print(ans)





if __name__ == '__main__':

    main()

from collections import defaultdict
import decimal
import sys

input = sys.stdin.readline


def prime_factor_count(n):
    def count(n, i):
        cnt = 0
        while n % i == 0:
            cnt += 1
            n //= i
        return n, cnt

    d = {}
    if n == 1:
        return d
    n, cnt = count(n, 2)
    d[2] = cnt
    lst = [2]
    for num in range(3, int(n**0.5) + 1, 2):
        if n == 1:
            break
        for p_num in lst:
            if num % p_num == 0:
                break
            elif p_num * p_num > num:
                lst.append(num)
                n, cnt = count(n, num)
                d[num] = cnt
                break
    else:
        if n != 1:
            d[n] = 1
    return d


def main():
    n = int(eval(input()))
    d = prime_factor_count(n)
    cnt = 0
    tmp_n = 0
    for k, v in list(d.items()):
        exp_cnt = 1
        while 1:
            if exp_cnt > v:
                break
            else:
                if tmp_n % (tmp_exp := k**exp_cnt) == 0:
                    tmp_n //= tmp_exp
                    cnt += 1
                    v -= exp_cnt
                    exp_cnt += 1
    else:
        if n == tmp_n:
            cnt += 1
    print(cnt)


if __name__ == "__main__":
    main()

import sys

input = sys.stdin.readline


def prime_factor_count(n):
    def count(n, p):
        cnt = 0
        while n % p == 0:
            n //= p
            cnt += 1
        np_cnt = 1
        while (cnt := cnt - np_cnt) >= 0:
            np_cnt += 1
        return n, np_cnt - 1

    n, cnt = count(n, 2)
    if n == 1:
        return cnt
    for i in range(3, int(n**0.5) * 1, 2):
        n, tmp_cnt = count(n, i)
        cnt += tmp_cnt
        if n == 1:
            break
    else:
        cnt += 1
    return cnt


def main():
    n = int(eval(input()))
    ans = prime_factor_count(n)
    print(ans)


if __name__ == "__main__":
    main()

-from collections import defaultdict -import decimal -    def count(n, i): +    def count(n, p): -        while n % i == 0: +        while n % p == 0: +            n //= p -            n //= i -        return n, cnt +        np_cnt = 1 +        while (cnt := cnt - np_cnt) >= 0: +            np_cnt += 1 +        return n, np_cnt - 1 -    d = {} +    n, cnt = count(n, 2) -        return d -    n, cnt = count(n, 2) -    d[2] = cnt -    lst = [2] -    for num in range(3, int(n**0.5) + 1, 2): +        return cnt +    for i in range(3, int(n**0.5) * 1, 2): +        n, tmp_cnt = count(n, i) +        cnt += tmp_cnt -        for p_num in lst: -            if num % p_num == 0: -                break -            elif p_num * p_num > num: -                lst.append(num) -                n, cnt = count(n, num) -                d[num] = cnt -                break -        if n != 1: -            d[n] = 1 -    return d +        cnt += 1 +    return cnt -    d = prime_factor_count(n) -    cnt = 0 -    tmp_n = 0 -    for k, v in list(d.items()): -        exp_cnt = 1 -        while 1: -            if exp_cnt > v: -                break -            else: -                if tmp_n % (tmp_exp := k**exp_cnt) == 0: -                    tmp_n //= tmp_exp -                    cnt += 1 -                    v -= exp_cnt -                    exp_cnt += 1 -    else: -        if n == tmp_n: -            cnt += 1 -    print(cnt) +    ans = prime_factor_count(n) +    print(ans)