#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

int solution(string s) {
    int answer = 0;
    int length = s.length();
    string new_str;
    answer = length;
    
    for (int i=1; i <= length/2; i++)
    {
        string tok = s.substr(0, i); // 자를 단위
        string left_str = s.substr(i); // 자르고 남은 문자열
        string new_str;
        int tok_cnt = length/i;
        int cnt = 1; // tok 과 중복되는 값
        bool br = false;

        for (int j = 1; j < tok_cnt; j++)
        {
            if (tok == left_str.substr(0, i)) // tok 과 중복
            {
                br = true;
                cnt++;
            }
            else // 다음 tok 
            {
                br = false;
                if (cnt > 1)
                    new_str += to_string(cnt);
                new_str += tok;
                tok = left_str.substr(0, i);
                cnt = 1;
            }
            if (j < tok_cnt-1)
                left_str = left_str.substr(i);
        }
        if (br)
        {
            new_str += to_string(cnt);
            new_str += tok;
            if (length % i)
                new_str += s.substr(length - length%i);
        }
        else
        {
            new_str += s.substr(i*(tok_cnt-1));
        }

        if (answer > new_str.length())
            answer = new_str.length();
    }
    
    return answer;
}