fun main() {
    val n = readLine()!!.toLong()

    val list = mutableListOf<Int>()
    var m = n
    var factor = 2L
    while (factor * factor <= n) {
        var count = 0
        while (m % factor == 0L) {
            m /= factor
            count += 1
        }
        if (count > 0) {
            list.add(count)
        }

        factor += 1
    }
    if (m != 1L) {
        list.add(1)
    }

    val max = list.map { it }.max() ?: 0
    val triangular = (1..max).map {
        it * (it + 1) / 2
    }

    println(list.map { value ->
        val index = triangular.indexOfLast { value >= it }
        if (index == -1) {
            0
        } else {
            index + 1
        }
    }.sum())
}