N = int(eval(input()))

A = 1

ans = len(str(N))

while A**2 <= N:

    if N % A != 0:

        # Bが整数にならない

        A += 1

        continue

    B = N // A

    cur = max(len(str(A)), len(str(B)))

    ans = min(ans, cur)

    A += 1

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

ans = len(str(N)) # Fの値は高々この値

for A in range(1, int(N**0.5) + 1):

  if N % A != 0: # AはNの約数でない

    continue

  B = N // A

  f = len(str(max(A,B)))

  ans = min(ans, f)

print(ans)
N = int(eval(input()))
A = 1
ans = len(str(N))
while A**2 <= N:
    if N % A != 0:
        # Bが整数にならない
        A += 1
        continue
    B = N // A
    cur = max(len(str(A)), len(str(B)))
    ans = min(ans, cur)
    A += 1
print(ans)

N = int(eval(input()))
ans = len(str(N))  # Fの値は高々この値
for A in range(1, int(N**0.5) + 1):
    if N % A != 0:  # AはNの約数でない
        continue
    B = N // A
    f = len(str(max(A, B)))
    ans = min(ans, f)
print(ans)

-A = 1 -ans = len(str(N)) -while A**2 <= N: -    if N % A != 0: -        # Bが整数にならない -        A += 1 +ans = len(str(N))  # Fの値は高々この値 +for A in range(1, int(N**0.5) + 1): +    if N % A != 0:  # AはNの約数でない -    cur = max(len(str(A)), len(str(B))) -    ans = min(ans, cur) -    A += 1 +    f = len(str(max(A, B))) +    ans = min(ans, f)