#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=1005; int map[N][N]; bool vis[N][N]; char str[N]; int dp(int,int); int main() { int t,t_cnt=0; scanf("%d",&t); getchar(); while(t--) { memset(vis,0,sizeof(vis)); memset(map,0,sizeof(map)); gets(str); int len=strlen(str); printf("Case %d: %d\n",++t_cnt,dp(0,len-1)); } return 0; } int dp(int x,int y) { //printf("%d %d\n",x,y); bool &flag=vis[x][y]; int &res=map[x][y]; if(flag) return res; else if(x>=y){flag=1;res=0;return 0;} else { if(str[x]==str[y]) res=dp(x+1,y-1); else res=1+min(dp(x+1,y),min(dp(x,y-1),dp(x+1,y-1))); flag=1;return res; } }