#include <bits/stdc++.h>
using namespace std;
string s;
int f[110][110];
inline bool check(int l,int r,int len){
for (int i=l;i<=r;i++){
if (s[i]!=s[(i-l)%len+l]) return false;
}
return true;
}
inline int fx(int x){
if (x==100) return 3;
if (x>9 && x<100) return 2;
if (x<=9) return 1;
}
int main(){
cin >> s;
int n =s.size();
s=' '+s;
memset(f,0x3f,sizeof(f));
for(int i=1;i<=n;i++){
f[i][i]=1;
}
for (int len=1;len<=n;len++){
for (int l=1;l<=n-len+1;l++){
int r=l+len-1;
for (int k=l;k<n;k++){
f[l][r]=min(f[l][r],f[l][k]+f[l+1][r]);
}
for (int k=l;k<n;k++){
int tmp=k-l+1;
if(!(len%tmp)){
if(check(l,r,tmp)){
f[l][r]=min(f[l][r],(f[l][k]+fx(l/tmp)+2));
}
}
}
}
}
cout << f[1][n];
}