#include <iostream>
#include <cstring>
#include <string>
using namespace std;
string s;
int len;
int f[55][55];
int dp(int l,int r){
if(f[l][r] > -1) return f[l][r];
if(l == r) return f[l][l] = 1;
int maxn = 0x3f3f3f3f;
if(s[l] == s[r]) maxn = min(maxn,min(dp(l + 1,r),min(dp(l,r - 1),dp(l + 1,r - 1) + 1)));
for(int i = l;i < r;i++)
maxn = min(maxn,dp(l,i) + dp(i + 1,r));
return f[l][r] = maxn;
}
int main(){
memset(f,-1,sizeof f);
cin >> s;
len = s.size();
cout << dp(0,len - 1);
return 0;
}