fun main() {
    val builder = StringBuilder()

    val N = readInputLine().toLong()

    val divisors = mutableMapOf<Long, Long>()

    var Ntmp = N

    for (i in LongRange(2L, Math.sqrt(N.toDouble()).toLong() + 1L)) {
        if (Ntmp == 1L) {
            break
        }
        while (Ntmp % i == 0L) {
            divisors[i] = (divisors[i] ?: 0L) + 1L
            Ntmp /= i
        }
    }

    if (Ntmp != 1L) {
        divisors[Ntmp] = 1L
    }

    val sumArr = LongArray(100)

    for (i in 1 until 100) {
        sumArr[i] = sumArr[i - 1] + i.toLong()
    }


    var ans = 0L

    for ((_, v) in divisors) {
        for (i in 1 until 100) {
            if (v < sumArr[i]) {
                ans += (i - 1).toLong()
                break
            }
        }
    }

    builder.appendln(ans)

    print(builder.toString())
}

fun readInputLine(): String {
    return readLine()!!
}
