Problem:
Score : 300 points

Problem Statement

You are given an integer N.

For two positive integers A and B, we will define F(A,B) as the larger of the following: the number of digits in the decimal notation of A, and the number of digits in the decimal notation of B.

For example, F(3,11) = 2 since 3 has one digit and 11 has two digits.

Find the minimum value of F(A,B) as (A,B) ranges over all pairs of positive integers such that N = A \times B.

Constraints

1 \leq N \leq 10^{10}

N is an integer.

Input

The input is given from Standard Input in the following format:

N

Output

Print the minimum value of F(A,B) as (A,B) ranges over all pairs of positive integers such that N = A \times B.

Sample Input 1

10000

Sample Output 1

3

F(A,B) has a minimum value of 3 at (A,B)=(100,100).

Sample Input 2

1000003

Sample Output 2

7

There are two pairs (A,B) that satisfy the condition: (1,1000003) and (1000003,1). For these pairs, F(1,1000003)=F(1000003,1)=7.

Sample Input 3

9876543210

Sample Output 3

6

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

//
//  main.cpp
//  ABC124
//
//  Created by hiroaki on 2019/05/07.
//  Copyright © 2019年 hiroaki. All rights reserved.
//

#include <iostream>
#include <vector>
#include <map>
#include <iterator>
#include <set>
#include <cmath>
#include <algorithm>
#include <locale>

//pair sort firstに揃う

#define int long long
#define pb(n) push_back(n)
#define For(n,i) for(int (i)=0;(i)<(n);(i)++)
#define Pr(n) cout<<n<<endl;
#define F first
#define S second
#define vector2 vector<vector<int> >
#define index(v,x) find((v).begin(), (v).end(), (x))-(v).begin()
#define ELM 100001 //問題によっては1000000001に変更
using namespace std;

vector<int> F(int x){
    vector<int> v;
    int c=0;
    for (int i=0; i*i<x; i++) {
        if (x%(i+1)==0) {
            if (i+1==x/(i+1)) {
                v.insert(v.begin()+c,i+1);
            }else{
                v.insert(v.begin()+c,i+1);
                v.insert(v.end()-c, x/(i+1));
            }
            c++;
        }
    }
    return v;
}
signed  main(){
    cin.tie(0);
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
//    vector<int> a(n);
//    For(n, i){
//        cin >> a.at(i);
//    }
    vector<int> v=F(n);
    int l=v.size();
    int mid=l/2;
    string s = to_string(v[mid]);
    Pr(s.length());
    return 0;
}