import Foundation

func sieve(_ x: Int) -> [Bool] {
    let sq = Int(sqrt(Double(N)) + 0.1)
    var array = Array(repeating: true, count: x)
    array[0] = false; array[1] = false
    for p in 2..<sq {
        if !array[p] { continue }
        for i in stride(from: p * p, to: x, by: p) {
            array[i] = false
        }
    }
    return array
}
//　因数分解！

var N = Int(readLine()!)!
var i = 0
var r = 0
if N != 1 {
    let s = sieve(N).enumerated().filter(\.1).map(\.0)
    
    for p in s {
        if N.isMultiple(of: p) {
            while N.isMultiple(of: p) {
                N = N / p
            }
            r += 1
        }
        i += 1
        if N == 1 { break }
    }
    print(r)
} else {
    print(0)
}