#include<iostream> #include<cstring> #include<cstdio> #define inf 0x7fffffff using namespace std; char s[101]; int n,f[101][101]; bool mark[101][101]; inline bool jud(int l,int r,int cl,int cr){ if((r-l+1)%(cr-cl+1)!=0)return 0; for(int i=l;i<=r;i++) if(s[i]!=s[(i-l)%(cr-cl+1)+cl])return 0; return 1; } int get(int x){ int t=0; while(x){x/=10;t++;} return t; } inline int dp(int l,int r){ if(l==r)return 1; if(mark[l][r])return f[l][r]; mark[l][r]=1; int t=r-l+1; for(int i=l;i<r;++i){ t=min(t,dp(l,i)+dp(i+1,r)); if(jud(i+1,r,l,i)) t=min(t,dp(l,i)+2+get((r-i)/(i-l+1)+1)); } return f[l][r]=t; } int main(){ scanf("%s",s); n=strlen(s)-1; printf("%d",dp(0,n)); return 0; }