#include <bits/stdc++.h>
using namespace std;
int t[100][100];
bool pailndrome(string s,int i,int j){
for(int k=0;k<(j-i+1)/2;k++){
if(s[k+i]!=s[j-k]){
return false;
}
}
return true;
}
int solve(string s,int i,int j){
if(i>=j){
return 0;
}
if(pailndrome(s,i,j)){
return 0;
}
if(t[i][j]!=-1){
return t[i][j];
}
int mn=INT_MAX;
for(int k=i;k<j;k++){
int left,right;
if(t[i][k]!=-1){
left=t[i][k];
}else{
left=solve(s,i,k);
}
if(t[k+1][j]!=-1){
right=t[k+1][j];
}else{
right=solve(s,k+1,j);
}
int temp=1+left+right;
if(temp<mn){
mn=temp;
}
return t[i][j]=mn;
}
}
int main() {
string s="stoot";
int i=0;
int j=s.size()-1;
memset(t,-1,sizeof(t));
cout<<solve(s,i,j);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCB0WzEwMF1bMTAwXTsKYm9vbCBwYWlsbmRyb21lKHN0cmluZyBzLGludCBpLGludCBqKXsKCWZvcihpbnQgaz0wO2s8KGotaSsxKS8yO2srKyl7CgkJaWYoc1trK2ldIT1zW2ota10pewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJcmV0dXJuIHRydWU7CgkKfQoKaW50IHNvbHZlKHN0cmluZyBzLGludCBpLGludCBqKXsKCWlmKGk+PWopewoJCXJldHVybiAwOwoJfQoJaWYocGFpbG5kcm9tZShzLGksaikpewoJCXJldHVybiAwOwoJfQoJaWYodFtpXVtqXSE9LTEpewoJCXJldHVybiB0W2ldW2pdOwoJfQoJaW50IG1uPUlOVF9NQVg7Cglmb3IoaW50IGs9aTtrPGo7aysrKXsKCQlpbnQgbGVmdCxyaWdodDsKCQlpZih0W2ldW2tdIT0tMSl7CgkJCWxlZnQ9dFtpXVtrXTsKCQl9ZWxzZXsKCQkJbGVmdD1zb2x2ZShzLGksayk7CgkJfQoJCQoJCWlmKHRbaysxXVtqXSE9LTEpewoJCQlyaWdodD10W2srMV1bal07CgkJfWVsc2V7CgkJCXJpZ2h0PXNvbHZlKHMsaysxLGopOwoJCX0KCQkKCQoJCWludCB0ZW1wPTErbGVmdCtyaWdodDsKCQlpZih0ZW1wPG1uKXsKCQkJbW49dGVtcDsKCQl9CgkJcmV0dXJuIHRbaV1bal09bW47CgkKCX0KCQkKfQoKCmludCBtYWluKCkgewoJc3RyaW5nIHM9InN0b290IjsKCWludCBpPTA7CglpbnQgaj1zLnNpemUoKS0xOwoJbWVtc2V0KHQsLTEsc2l6ZW9mKHQpKTsKCWNvdXQ8PHNvbHZlKHMsaSxqKTsKCXJldHVybiAwOwp9