N = int(eval(input()))



def check(a, b):

    return max(len(str(a)), len(str(b)))



n = int(N ** (1/2))

#arr =[]

res = check(1, N)



i = 1

while i <= n:

  if N % i == 0:

    res = min(res, check(i,int(N / i)))

  i += 1



print(res)
N = int(eval(input())) 

n = int(N**.5)

res = len(str(N))

for i in range(2,n+1):

    if N % i == 0:

        #print(len(str(i)),len(str(N/i)))

        f = max(len(str(i)),len(str(N//i)))

        res = min(res, f)

#        print(i, len(str(i)),len(str(N/i)),res, f)

print(res)

N = int(eval(input()))


def check(a, b):
    return max(len(str(a)), len(str(b)))


n = int(N ** (1 / 2))
# arr =[]
res = check(1, N)
i = 1
while i <= n:
    if N % i == 0:
        res = min(res, check(i, int(N / i)))
    i += 1
print(res)

N = int(eval(input()))
n = int(N**0.5)
res = len(str(N))
for i in range(2, n + 1):
    if N % i == 0:
        # print(len(str(i)),len(str(N/i)))
        f = max(len(str(i)), len(str(N // i)))
        res = min(res, f)
#        print(i, len(str(i)),len(str(N/i)),res, f)
print(res)

- - -def check(a, b): -    return max(len(str(a)), len(str(b))) - - -n = int(N ** (1 / 2)) -# arr =[] -res = check(1, N) -i = 1 -while i <= n: +n = int(N**0.5) +res = len(str(N)) +for i in range(2, n + 1): -        res = min(res, check(i, int(N / i))) -    i += 1 +        # print(len(str(i)),len(str(N/i))) +        f = max(len(str(i)), len(str(N // i))) +        res = min(res, f) +#        print(i, len(str(i)),len(str(N/i)),res, f)