#include<bits/stdc++.h>
using namespace std;
#define int long long
#define F(i,k,n) for (int i=k;i<=n;i++)
const int N=100;
typedef long long ll;
string s;
int n;
int a[N],dp[N][N];
signed main(){
cin>>s;
memset(dp,0x3f,sizeof dp);
n=s.size();
F(i,1,n) a[i]=s[i-1];
F(i,1,n) dp[i][i]=1;
F(len,2,n){
F(l,1,n){
int r=l+len-1;
if (r>n) break;
int nl=l,nr=r;
if (a[l]==a[r]){
while (nl<=r && a[nl]==a[r]) nl++;
while (nr>=l && a[nr]==a[l]) nr--;
if (nl>nr){
dp[l][r]=1;
continue;
}
dp[l][r]=dp[nl][nr]+1;
}
F(k,l,r-1){
dp[l][r]=min(dp[l][r],dp[l][k]+dp[k+1][r]);
if (a[l]==a[k] && a[k]==a[r]){
int nkl=k,nkr=k;
while (nkl>nl && a[k]==a[nkl]) nkl--;
while (nkr<nr && a[k]==a[nkr]) nkr++;
dp[l][r]=min(dp[l][r],dp[nl][nkl]+dp[nkr][nr]+1);
}
}
}
}
cout<<dp[1][n];
return 0;
}