#include<bits/stdc++.h>
#define INF INT_MAX
using namespace std;
char s[51];
int f[51][51],lens,g[51];
bool check(int l,int r,int len)
{
for(int i=l+len;i<=r;i++)
if(s[i]!=s[(i-l)%len+l])return false;
return true;
}
int solve(int l,int r,int len)
{
int num=(r-l+1)/len;
memset(g,0,sizeof(g));
g[1]=len;
for(int i=1;i<=num;i++)
{
g[2*i]=g[i]+1;
g[2*i+1]=g[i]+1+len;
if(2*i==num||2*i+1==num)break;
}
if(l!=0)g[num]+=1;
return g[num];
}
int main()
{
scanf("%s",s);
lens=strlen(s)-1;
for(int i=0;i<=lens;i++)
for(int j=0;j<=lens;j++)
f[i][j]=INF;
for(int i=0;i<=lens;i++)f[i][i]=1;
for(int sul=2;sul<=lens+1;sul++)
for(int i=0;i<=lens+1-sul;i++)
{
int j=sul+i-1;
for(int k=i;k<=j-1;k++)
f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);
for(int k=i;k<=j-1;k++)
{
int len=k-i+1;
if((j-i+1)%len!=0)continue;
if(check(i,j,len))
f[i][j]=min(f[i][j],solve(i,j,len));
}
}
printf("%d",f[0][lens]);
return 0;
}