import kotlin.math.sqrt

fun main(){
    val n = readLine()!!.toLong()
    //var primeList : List<Map<Int, Int>> = listOf()
    var primeAndIndex : MutableMap<Long, Int> = mutableMapOf()
    var tmp = n
    var i = 2L
    while(tmp != 1L) {
        //println(tmp)
        var indexCount = 0
        while (tmp % i == 0L) {
            tmp /= i
            indexCount++
            //println(tmp)
        }
        //println("end")
        i++
        if(indexCount > 0) primeAndIndex[i] = indexCount
        if(i >= sqrt(n.toDouble())){
            primeAndIndex[n] = 1
            break
        }
        //println(primeAndIndex)
        //println(tmp)
        //println(i)
    }
    //println("whileend")
    var count = 0
    primeAndIndex.forEach{
        var j = 1
        var index = it.value
        while(true){
            index -= j
            if(index < 0) break
            //println(index)
            j++
            count++
        }
    }
    println(count)
}