program ABC169_D
  integer(8)::M,O,P,k=2,l=1,ans=0
  integer(8),allocatable::A(:)
  double precision::N
  read(*,*)N
  M=dint(N)
  P=M
  O=dint(sqrt(N))
  allocate(A(0:O))
  A=0
  do while(M>1)
     if(mod(M,k)==0) then
        A(k)=A(k)+1
        M=M/k
        if(k>O) then
           A(0)=1
           exit
        end if
     else
        k=k+1
        if(k>O) then
           A(0)=1
           exit
        end if
     end if
  end do
  do i=0,O
     do while(A(i)-l>=0)
        ans=ans+1
        A(i)=A(i)-l
        l=l+1
     end do
     l=1
  end do
  write(*,*)ans
end program ABC169_D