fun main(args : Array<String>) {
    val n = readLine()!!.toLong()
    val dd = divisor(n)

    var min = Long.MAX_VALUE

    dd.forEach {
        val d1 = it
        val d2 = n / d1

        val l1 = d1.toString().length.toLong()
        val l2 = d2.toString().length.toLong()

        min = Math.min(min, Math.max(l1, l2))
    }

    println(min)
}

fun divisor(value : Long) : List<Long> {
    val divisors = mutableListOf<Long>()
    var i = 1L
    while (i * i <= value) {
        if (0L == value % i) {
            divisors.add(i)
            if (i != value/i) divisors.add(value/i)
        }
        i++
    }
    return divisors.sorted()
}
