import java.util.*;
 
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = Long.parseLong(sc.next());
		long a = 1;
		long b = n;
		ArrayList<Integer> list = new ArrayList<>();
		int min = String.valueOf(n).length();
		if(Math.sqrt(n) - (int)(Math.sqrt(n)) == 0) {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		}else {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		}
		
		System.out.println(min);
	}
} import java.util.*; util.* java public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = Long.parseLong(sc.next());
		long a = 1;
		long b = n;
		ArrayList<Integer> list = new ArrayList<>();
		int min = String.valueOf(n).length();
		if(Math.sqrt(n) - (int)(Math.sqrt(n)) == 0) {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		}else {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		}
		
		System.out.println(min);
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = Long.parseLong(sc.next());
		long a = 1;
		long b = n;
		ArrayList<Integer> list = new ArrayList<>();
		int min = String.valueOf(n).length();
		if(Math.sqrt(n) - (int)(Math.sqrt(n)) == 0) {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		}else {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		}
		
		System.out.println(min);
	} main {
		Scanner sc = new Scanner(System.in);
		long n = Long.parseLong(sc.next());
		long a = 1;
		long b = n;
		ArrayList<Integer> list = new ArrayList<>();
		int min = String.valueOf(n).length();
		if(Math.sqrt(n) - (int)(Math.sqrt(n)) == 0) {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		}else {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		}
		
		System.out.println(min);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) long n = Long.parseLong(sc.next()); n Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc long a = 1; a 1 long b = n; b n ArrayList<Integer> list = new ArrayList<>(); list new ArrayList<>() int min = String.valueOf(n).length(); min String.valueOf(n).length() String.valueOf(n).length String.valueOf(n) String.valueOf String n if(Math.sqrt(n) - (int)(Math.sqrt(n)) == 0) {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		}else {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		} Math.sqrt(n) - (int)(Math.sqrt(n)) == 0 Math.sqrt(n) - (int)(Math.sqrt(n)) Math.sqrt(n) Math.sqrt Math n (int)(Math.sqrt(n)) Math.sqrt Math n 0 {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		} min = String.valueOf((int)Math.sqrt(n)).length() min String.valueOf((int)Math.sqrt(n)).length() String.valueOf((int)Math.sqrt(n)).length String.valueOf((int)Math.sqrt(n)) String.valueOf String (int)Math.sqrt(n) Math.sqrt Math n {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		} for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		} int i=2; int i=2; i 2 i<=Math.sqrt(n) i Math.sqrt(n) Math.sqrt Math n i++ i++ i {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		} {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		} if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    } b % i == 0 b % i b i 0 {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    } list.add(i) list.add list i a *= i a i b /= i b i i-- i for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		} int i=0; int i=0; i 0 i<Math.pow(2, list.size()) i Math.pow(2, list.size()) Math.pow Math 2 list.size() list.size list i++ i++ i {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		} {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		} a = 1 a 1 b = n b n for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    } int j=0; int j=0; j 0 j<list.size() j list.size() list.size list j++ j++ j {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    } {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    } if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);} (1&i>>j) == 1 (1&i>>j) 1 i>>j i j 1 {a*=list.get(j); b /= list.get(j);} a*=list.get(j) a list.get(j) list.get list j b /= list.get(j) b list.get(j) list.get list j if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length()); min > Math.max(String.valueOf(a).length(), String.valueOf(b).length()) min Math.max(String.valueOf(a).length(), String.valueOf(b).length()) Math.max Math String.valueOf(a).length() String.valueOf(a).length String.valueOf(a) String.valueOf String a String.valueOf(b).length() String.valueOf(b).length String.valueOf(b) String.valueOf String b min = Math.max(String.valueOf(a).length(), String.valueOf(b).length()) min Math.max(String.valueOf(a).length(), String.valueOf(b).length()) Math.max Math String.valueOf(a).length() String.valueOf(a).length String.valueOf(a) String.valueOf String a String.valueOf(b).length() String.valueOf(b).length String.valueOf(b) String.valueOf String b 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) {
		Scanner sc = new Scanner(System.in);
		long n = Long.parseLong(sc.next());
		long a = 1;
		long b = n;
		ArrayList<Integer> list = new ArrayList<>();
		int min = String.valueOf(n).length();
		if(Math.sqrt(n) - (int)(Math.sqrt(n)) == 0) {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		}else {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		}
		
		System.out.println(min);
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = Long.parseLong(sc.next());
		long a = 1;
		long b = n;
		ArrayList<Integer> list = new ArrayList<>();
		int min = String.valueOf(n).length();
		if(Math.sqrt(n) - (int)(Math.sqrt(n)) == 0) {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		}else {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		}
		
		System.out.println(min);
	}
} Main
import java.util.*;
 
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = Long.parseLong(sc.next());
		long a = 1;
		long b = n;
		ArrayList<Integer> list = new ArrayList<>();
		int min = String.valueOf(n).length();
		if(Math.sqrt(n) - (int)(Math.sqrt(n)) == 0) {
		    min = String.valueOf((int)Math.sqrt(n)).length();
		}else {
    		for(int i=2; i<=Math.sqrt(n); i++) {
    		    if(b % i == 0) {
    		        list.add(i);
    		        a *= i;
    		        b /= i;
    		        i--;
    		    }
    		}

    		
    		for(int i=0; i<Math.pow(2, list.size()); i++) {
    		    a = 1;
    		    b = n;
    		    for(int j=0; j<list.size(); j++) {
    		        if((1&i>>j) == 1) {a*=list.get(j); b /= list.get(j);}
    		    }
    		    if(min > Math.max(String.valueOf(a).length(), String.valueOf(b).length())) min = Math.max(String.valueOf(a).length(), String.valueOf(b).length());
    		}
		}
		
		System.out.println(min);
	}
}