因為馬拉車不能求迴文子序列個數,所以只能採用這個DP
#include <iostream>
using namespace std;
int dp[200][200];
string str;
int solve(){
int l=str.length();
for(int j=0;j<l;++j){
dp[j][j]=1;
for(int i=j-1;i>=0;--i){
if(str[i]==str[j]) dp[i][j]=dp[i+1][j]+dp[i][j-1]+1;
else dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1];
}
}
return dp[0][l-1];
}
int main(){
while(cin>>str){
cout<<solve()<<endl;
}
return 0;
}