/*
题意:把一个字符串分成尽量少的回文串 ,求分的的最小数目
dp[i] = max{dp[j-1] + 1 | str[j....i]为回文串}。
*/
#include<stdio.h>
#include<string.h>
#define N 1000+10
char str[N];
int dp[N];
int min(int x,int y)
{
if(x<y) return x;
return y;
}
bool isPalindromes(int x,int y)
{
for(int i=x;i<=y;i++)
{
if(str[i]!=str[x+y-i])
return 0;
}
return 1;
}
int main()
{
int t,len,i,j;
scanf("%d\n",&t);
while(t--)
{
scanf("%s",str+1);
// printf("%s",str+1);
// dp[0]=1;
len=strlen(str+1);
// printf("%d----",len);
for(i=0;i<=len;i++)
dp[i]=i;
// dp[0]=0;
// printf("%d++++\n",isPalindromes(1,3));
for(i=1;i<=len;i++)
{
for(j=1;j<=i;j++)
{
if(isPalindromes(j,i))
dp[i]=min(dp[i],dp[j-1]+1);
}
}
printf("%d\n",dp[len]);
}
// for(;;);
return 0;
}