import java.util.*;

public class Main {

    public static void main(String[] args) {
        // write your code here
        Scanner sc = new Scanner(System.in);

        long x = sc.nextLong();
        long kouho1 = 1;
        long kouho2 = 1;
        double standard = Math.sqrt(x);

        for (long i = (long)standard; i >= 2; i--) {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        }

        if (x > kouho1 * kouho2) {
            kouho2 *= kouho1;
            kouho1 = x;
        } else if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        }

        System.out.println(Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length()));
    }
} import java.util.*; util.* java public class Main {

    public static void main(String[] args) {
        // write your code here
        Scanner sc = new Scanner(System.in);

        long x = sc.nextLong();
        long kouho1 = 1;
        long kouho2 = 1;
        double standard = Math.sqrt(x);

        for (long i = (long)standard; i >= 2; i--) {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        }

        if (x > kouho1 * kouho2) {
            kouho2 *= kouho1;
            kouho1 = x;
        } else if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        }

        System.out.println(Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length()));
    }
} Main public static void main(String[] args) {
        // write your code here
        Scanner sc = new Scanner(System.in);

        long x = sc.nextLong();
        long kouho1 = 1;
        long kouho2 = 1;
        double standard = Math.sqrt(x);

        for (long i = (long)standard; i >= 2; i--) {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        }

        if (x > kouho1 * kouho2) {
            kouho2 *= kouho1;
            kouho1 = x;
        } else if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        }

        System.out.println(Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length()));
    } main {
        // write your code here
        Scanner sc = new Scanner(System.in);

        long x = sc.nextLong();
        long kouho1 = 1;
        long kouho2 = 1;
        double standard = Math.sqrt(x);

        for (long i = (long)standard; i >= 2; i--) {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        }

        if (x > kouho1 * kouho2) {
            kouho2 *= kouho1;
            kouho1 = x;
        } else if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        }

        System.out.println(Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length()));
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) long x = sc.nextLong(); x sc.nextLong() sc.nextLong sc long kouho1 = 1; kouho1 1 long kouho2 = 1; kouho2 1 double standard = Math.sqrt(x); standard Math.sqrt(x) Math.sqrt Math x for (long i = (long)standard; i >= 2; i--) {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        } long i = (long)standard; long i = (long)standard; i (long)standard i >= 2 i 2 i-- i-- i {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        } {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        } if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            } x % i == 0 x % i x i 0 { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            } while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                } x % i == 0 x % i x i 0 {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                } x /= i x i if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    } kouho1 * i > standard kouho1 * i kouho1 i standard {
                        kouho2 *= i;
                    } kouho2 *= i kouho2 i {
                        kouho1 *= i;
                    } kouho1 *= i kouho1 i if (x > kouho1 * kouho2) {
            kouho2 *= kouho1;
            kouho1 = x;
        } else if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        } x > kouho1 * kouho2 x kouho1 * kouho2 kouho1 kouho2 {
            kouho2 *= kouho1;
            kouho1 = x;
        } kouho2 *= kouho1 kouho2 kouho1 kouho1 = x kouho1 x if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        } kouho1 * x >= standard kouho1 * x kouho1 x standard {
            kouho2 *= x;
        } kouho2 *= x kouho2 x {
            kouho1 *= x;
        } kouho1 *= x kouho1 x System.out.println(Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length())) System.out.println System.out System System.out Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length()) Math.max Math String.valueOf(kouho1).length() String.valueOf(kouho1).length String.valueOf(kouho1) String.valueOf String kouho1 String.valueOf(kouho2).length() String.valueOf(kouho2).length String.valueOf(kouho2) String.valueOf String kouho2 String[] args args public class Main {

    public static void main(String[] args) {
        // write your code here
        Scanner sc = new Scanner(System.in);

        long x = sc.nextLong();
        long kouho1 = 1;
        long kouho2 = 1;
        double standard = Math.sqrt(x);

        for (long i = (long)standard; i >= 2; i--) {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        }

        if (x > kouho1 * kouho2) {
            kouho2 *= kouho1;
            kouho1 = x;
        } else if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        }

        System.out.println(Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length()));
    }
} public class Main {

    public static void main(String[] args) {
        // write your code here
        Scanner sc = new Scanner(System.in);

        long x = sc.nextLong();
        long kouho1 = 1;
        long kouho2 = 1;
        double standard = Math.sqrt(x);

        for (long i = (long)standard; i >= 2; i--) {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        }

        if (x > kouho1 * kouho2) {
            kouho2 *= kouho1;
            kouho1 = x;
        } else if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        }

        System.out.println(Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length()));
    }
} Main
import java.util.*;

public class Main {

    public static void main(String[] args) {
        // write your code here
        Scanner sc = new Scanner(System.in);

        long x = sc.nextLong();
        long kouho1 = 1;
        long kouho2 = 1;
        double standard = Math.sqrt(x);

        for (long i = (long)standard; i >= 2; i--) {
            if (x % i == 0) { // 最小の因数を求める
                while (x % i == 0) {
                    x /= i; // 最小の因数で割った数を代入する
                    if (kouho1 * i > standard) {
                        kouho2 *= i;
                    } else {
                        kouho1 *= i;
                    }
                }
            }
        }

        if (x > kouho1 * kouho2) {
            kouho2 *= kouho1;
            kouho1 = x;
        } else if (kouho1 * x >= standard) {
            kouho2 *= x;
        }  else {
            kouho1 *= x;
        }

        System.out.println(Math.max(String.valueOf(kouho1).length(), String.valueOf(kouho2).length()));
    }
}