//素因数分解
//2~√nで小さい順で素因数を見ていけばよい
//6になる頃には2,2^2,2^3...,3,3^2,3^3,,,と2と3はすでに全部使われているから
using System;
using System.Collections.Generic;
class Program
{
    //nを満たす配列は長さが10^12でサポート外なので素因数ごとに枠作る
    public class Pair
    {
        public List<long> Pr;//Prime素因数
        public List<int> Ex;//Exponentitaion累乗(型の数)
        public void SetPair(long p, int e)
        {
            Pr.Add(p);
            Ex.Add(e);
        }
    }
    static void Main()
    {
        long n = long.Parse(Console.ReadLine());
        //素因数分解
        var p = new Pair();
        //ここ大事、クラス内のListもインスタンス作る必要あり
        p.Pr = new List<long>();
        p.Ex = new List<int>();
        for(long i = 2; i * i <= n; i++)
        {
            //肩の数
            int x = 0;
            while (n % i == 0)
            {
                n /= i;//nを割っていく
                ++x;
            }
            p.SetPair(i, x);
        }
        if (n != 1) p.SetPair(n, 1);
    //肩の数を1,2,3,のキリの良い数足していく
    int ans = 0;
        foreach(var cnt in p.Ex)
        {
            long x = cnt;
            int b = 1;
            while (b <= x)
            {
                x -= b;
                b++;
                ans++;
            }
        }
        Console.WriteLine(ans);
    }
}























//まず素因数分解
//class Program
//{
//    //public class Pair
//    //{
//    //    public long[] Prime;//素因数
//    //    public int[] ExPon;//Exponentitaion累乗(型の数)
//    //    public Pair(long n)
//    //    {
//    //        Prime = new long[n];
//    //        ExPon = new int[n];
//    //    }
//    //}
//    static void Main()
//    {
//        long n = long.Parse(Console.ReadLine());
//        //int[] ExPon=new int[n+1];//Exponentitaion累乗(型の数)
//        long temp = n;
//        bool flag = false;
//        int cnt = 0;
//        for (long i = 2; i <= (int)Math.Sqrt(n); i++)
//        {
//            int ex = 1;
//            while(i<=temp)
//            {
//                if (temp % (long)Math.Pow(i, ex) == 0) 
//                {
//                    temp /= (long)Math.Pow(i, ex);
//                    Console.Write(" " + i);
//                    ex++;
//                    flag = true;
//                }
//                else break;
//            }
//            //ExPon[i] += (ex-1);
//            cnt+= (ex - 1);
//        }
//        if (flag || n==1)
//        {
//            Console.WriteLine(cnt);
//        }
//        else
//        {
//            Console.WriteLine(1);
//        }
//    }
//}



//origina
//動くけど遅い
//ちょっと考え方もちがう
//class Program
//{
//    static void Main()
//    {
//        long n = long.Parse(Console.ReadLine());
//        int cnt = 0;
//        for(int i=2; i <= n; i++)
//        {
//            if (n % i == 0)
//            {
//                n /= i;
//                cnt++;
//            }
//        }
//        Console.WriteLine(cnt);
//    }
//    public static bool IsPrime(long x)
//    {
//        //素数判定
//        if (x < 2) return false;
//        if (x == 2) return true;
//        if (x%2 == 0) return false;
//        double sqrt = Math.Sqrt(x);
//        for(int i = 3; i < sqrt; i += 2)
//        {
//            if (x % i == 0) return false;
//        }
//        return true;
//    } 
//}


Measured memory_bytes: 47488