import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		long N=sc.nextLong();
		long min=N;
		for(int i=1;i<=Math.pow(N, 0.5);i++) {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		}
		System.out.println(min);

	}

} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		long N=sc.nextLong();
		long min=N;
		for(int i=1;i<=Math.pow(N, 0.5);i++) {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		}
		System.out.println(min);

	}

} Main public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		long N=sc.nextLong();
		long min=N;
		for(int i=1;i<=Math.pow(N, 0.5);i++) {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		}
		System.out.println(min);

	} main {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		long N=sc.nextLong();
		long min=N;
		for(int i=1;i<=Math.pow(N, 0.5);i++) {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		}
		System.out.println(min);

	} Scanner sc=new Scanner(System.in); sc new Scanner(System.in) long N=sc.nextLong(); N sc.nextLong() sc.nextLong sc long min=N; min N for(int i=1;i<=Math.pow(N, 0.5);i++) {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		} int i=1; int i=1; i 1 i<=Math.pow(N, 0.5) i Math.pow(N, 0.5) Math.pow Math N 0.5 i++ i++ i {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		} {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		} long A=0; A 0 long B=0; B 0 if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			} N%i!=0 N%i N i 0 {
				continue;
			} continue; {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			} A=N/i A N/i N i B=N/A B N/A N A String a=String.valueOf(A); a String.valueOf(A) String.valueOf String A String b=String.valueOf(B); b String.valueOf(B) String.valueOf String B long len=Math.max(a.length(),b.length()); len Math.max(a.length(),b.length()) Math.max Math a.length() a.length a b.length() b.length b if(len<min) {
					min=len;
				} len<min len min {
					min=len;
				} min=len min len System.out.println(min) System.out.println System.out System System.out min String[] args args public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		long N=sc.nextLong();
		long min=N;
		for(int i=1;i<=Math.pow(N, 0.5);i++) {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		}
		System.out.println(min);

	}

} public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		long N=sc.nextLong();
		long min=N;
		for(int i=1;i<=Math.pow(N, 0.5);i++) {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		}
		System.out.println(min);

	}

} Main
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		long N=sc.nextLong();
		long min=N;
		for(int i=1;i<=Math.pow(N, 0.5);i++) {
			long A=0;
			long B=0;
			if(N%i!=0) {
				continue;
			}else {
				A=N/i;
				B=N/A;
				String a=String.valueOf(A);
				String b=String.valueOf(B);
				long len=Math.max(a.length(),b.length());
				if(len<min) {
					min=len;
				}
				
				
			}
			
		}
		System.out.println(min);

	}

}
