P4302
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
int mem[N][N],n;
char a[N];
int calc(int x){
int ret=0;
while(x){
ret++,x/=10;
}
return ret;
}
int check(int len,int l,int r){
for(int i=l;i<=l+len-1;i++){
for(int j=i;j<=r;j+=len){
if(a[i]!=a[j]){
return 0;
}
}
}
return 1;
}
int dfs(int l,int r){
if(l==r){
return 1;
}
if(mem[l][r]!=-1){
return mem[l][r];
}
int ret=r-l+1;//不折叠
for(int i=1;i<=r-l+1;i++){
if((r-l+1)%i==0){
if(check(i,l,r)){
ret=min(ret,2+calc((r-l+1)/i)+i);
}
}
}
for(int i=l;i<r;i++){
ret=min(ret,dfs(l,i)+dfs(i+1,r));
}
return mem[l][r]=ret;
}
int main(){
cin>>a+1;
n=strlen(a+1);
memset(mem,-1,sizeof(mem));
cout<<dfs(1,n);
}