#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#include <cstring>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <cstdlib>
#include <string>
#include <list>
#include <bitset>
#include <iomanip>
#include <cmath>
#include <sstream>
#include <deque>
#include <climits>
#include <cassert>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define sll(x) scanf("%lld",&x)
#define sull(x) scanf("%llu",&x)
#define si(x) scanf("%d",&x)
#define ISF(x) getline(cin,x)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pps pair<ll,pll>
#define ppf pair<pll,ll>
#define psi pair<string,int>
#define pis pair<int,string>
#define fr first
#define se second
#define MOD 1000000007
#define MP(x,y) make_pair(x,y)
#define eps 1e-7
#define V(x) vector<x>
#define pb(x) push_back(x)
#define mem(x,i) memset(x,i,sizeof(x))
#define fori(i,s,n) for(i=(s);i<(n);i++)
#define ford(i,s,n) for(i=(n);i>=(s);--i)
#define INF 8944674407370955161LL
#define debug(i,st,arr) fori(i,0,st){cout<<arr[i]<<" ";}cout<<endl;
#define forci(i,sw) for((i)=(sw).begin();(i)!=(sw).end();(i)++)
#define forcd(i,sw) for((i)=(sw).rbegin();(i)!=(sw).rend();(i)++)
#define ck(t) clock_t t = clock()
int abs(int x) {if(x < 0) return -x; return x;}
inline int gcd(int a,int b){return (b==0)?a:gcd(b,a%b);}
/*inline int readint( )
{
int n = 0 , s = 1 ; char p = getchar_unlocked( ) ;
if(p == '-') s = -1 ;
while((p < '0' || p > '9') && p != EOF && p != '-')
p = getchar_unlocked( ) ;
if(p == '-') s=-1 , p=getchar_unlocked( );
while(p >= '0' && p <= '9')
n = (n << 3) + (n << 1) + (p - '0'), p = getchar_unlocked( ) ;
return n * s ;
}*/
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
char s[100];
scanf("%s",s);
bool isp[100][100];
int dp[100];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
isp[i][j]=false;
for(int i=0;i<n;i++)
{
isp[i][i]=true;
if(i<n-1)
{
if(s[i]==s[i+1])
isp[i][i+1]=true;
}
}
for(int i=3;i<=n;i++)
for(int j=0;j<=n-i;j++)
if(s[j]==s[i+j-1])
{
if(isp[j+1][i+j-2])
isp[j][i+j-1]=true;
}
int min;
int t=1;
for(int i=0;i<n;i++)
{
if(isp[0][i]){
// min=1;
dp[i]=1;
continue;
}
for(int j=0;j<=i;j++)
{
if(isp[j][i])
{
if(j>0&&j!=i)
{
dp[i]=dp[j-1]+1;
break;
}
if(i==j&&j>0)
dp[i]=dp[j-1]+1;
}
}
}
printf("%d\n",dp[n-1]);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPGJpdHNldD4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxkZXF1ZT4KI2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxjYXNzZXJ0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIE1heCh4LHkpICgoeCk+KHkpPyh4KTooeSkpCiNkZWZpbmUgTWluKHgseSkgKCh4KTwoeSk/KHgpOih5KSkKI2RlZmluZSBzbGwoeCkgc2NhbmYoIiVsbGQiLCZ4KQojZGVmaW5lIHN1bGwoeCkgc2NhbmYoIiVsbHUiLCZ4KQojZGVmaW5lIHNpKHgpIHNjYW5mKCIlZCIsJngpCiNkZWZpbmUgSVNGKHgpIGdldGxpbmUoY2luLHgpCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBwbGwgcGFpcjxsbCxsbD4KI2RlZmluZSBwcHMgcGFpcjxsbCxwbGw+CiNkZWZpbmUgcHBmIHBhaXI8cGxsLGxsPgojZGVmaW5lIHBzaSBwYWlyPHN0cmluZyxpbnQ+CiNkZWZpbmUgcGlzIHBhaXI8aW50LHN0cmluZz4KI2RlZmluZSBmciBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgTVAoeCx5KSBtYWtlX3BhaXIoeCx5KQojZGVmaW5lIGVwcyAxZS03CiNkZWZpbmUgVih4KSB2ZWN0b3I8eD4KI2RlZmluZSBwYih4KSBwdXNoX2JhY2soeCkKI2RlZmluZSBtZW0oeCxpKSBtZW1zZXQoeCxpLHNpemVvZih4KSkKI2RlZmluZSBmb3JpKGkscyxuKSBmb3IoaT0ocyk7aTwobik7aSsrKQojZGVmaW5lIGZvcmQoaSxzLG4pIGZvcihpPShuKTtpPj0ocyk7LS1pKQojZGVmaW5lIElORiA4OTQ0Njc0NDA3MzcwOTU1MTYxTEwKI2RlZmluZSBkZWJ1ZyhpLHN0LGFycikgZm9yaShpLDAsc3Qpe2NvdXQ8PGFycltpXTw8IiAiO31jb3V0PDxlbmRsOwojZGVmaW5lIGZvcmNpKGksc3cpIGZvcigoaSk9KHN3KS5iZWdpbigpOyhpKSE9KHN3KS5lbmQoKTsoaSkrKykKI2RlZmluZSBmb3JjZChpLHN3KSBmb3IoKGkpPShzdykucmJlZ2luKCk7KGkpIT0oc3cpLnJlbmQoKTsoaSkrKykKI2RlZmluZSBjayh0KQljbG9ja190IHQgPSBjbG9jaygpCmludCBhYnMoaW50IHgpIHtpZih4IDwgMCkgcmV0dXJuIC14OyByZXR1cm4geDt9CmlubGluZSBpbnQgZ2NkKGludCBhLGludCBiKXtyZXR1cm4gKGI9PTApP2E6Z2NkKGIsYSViKTt9Ci8qaW5saW5lIGludCByZWFkaW50KCApCnsKCWludCBuID0gMCAsIHMgPSAxIDsgY2hhciBwID0gZ2V0Y2hhcl91bmxvY2tlZCggKSA7CglpZihwID09ICctJykgcyA9IC0xIDsKCXdoaWxlKChwIDwgJzAnIHx8IHAgPiAnOScpICYmIHAgIT0gRU9GICYmIHAgIT0gJy0nKQoJCXAgPSBnZXRjaGFyX3VubG9ja2VkKCApIDsKCWlmKHAgPT0gJy0nKSBzPS0xICwgcD1nZXRjaGFyX3VubG9ja2VkKCApOwoJd2hpbGUocCA+PSAnMCcgJiYgcCA8PSAnOScpCgkJbiA9IChuIDw8IDMpICsgKG4gPDwgMSkgKyAocCAtICcwJyksIHAgPSBnZXRjaGFyX3VubG9ja2VkKCApIDsKCXJldHVybiBuICogcyA7Cn0qLwppbnQgbWFpbigpCnsKCWludCB0OwoJc2NhbmYoIiVkIiwmdCk7Cgl3aGlsZSh0LS0pCgl7CgkJaW50IG47CgkJc2NhbmYoIiVkIiwmbik7CgkJY2hhciBzWzEwMF07CgkJc2NhbmYoIiVzIixzKTsKCQlib29sIGlzcFsxMDBdWzEwMF07CgkJaW50IGRwWzEwMF07CgkJZm9yKGludCBpPTA7aTxuO2krKykKCQkJZm9yKGludCBqPTA7ajxuO2orKykKCQkJCWlzcFtpXVtqXT1mYWxzZTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCXsKCQkJaXNwW2ldW2ldPXRydWU7CgkJCWlmKGk8bi0xKQoJCQl7CgkJCQlpZihzW2ldPT1zW2krMV0pCgkJCQkJaXNwW2ldW2krMV09dHJ1ZTsKCQkJfQoJCX0KCQlmb3IoaW50IGk9MztpPD1uO2krKykKCQkJZm9yKGludCBqPTA7ajw9bi1pO2orKykKCQkJCWlmKHNbal09PXNbaStqLTFdKQoJCQkJewoJCQkJCWlmKGlzcFtqKzFdW2krai0yXSkKCQkJCQkJaXNwW2pdW2krai0xXT10cnVlOwoJCQkJfQoJCWludCBtaW47CgkJaW50IHQ9MTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCXsKCQkJCgkJCWlmKGlzcFswXVtpXSl7CgkJCS8vCW1pbj0xOwoJCQkJZHBbaV09MTsKCQkJCWNvbnRpbnVlOwoJCQl9CgkJCWZvcihpbnQgaj0wO2o8PWk7aisrKQoJCQl7CgkJCQkKCQkJCWlmKGlzcFtqXVtpXSkKCQkJCXsKCQkJCQlpZihqPjAmJmohPWkpCgkJCQkJewoJCQkJCQlkcFtpXT1kcFtqLTFdKzE7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQlpZihpPT1qJiZqPjApCgkJCQkJCWRwW2ldPWRwW2otMV0rMTsKCQkJCX0KCQkJfQoJCX0KCQlwcmludGYoIiVkXG4iLGRwW24tMV0pOwkJCQoJfQoJcmV0dXJuIDA7Cn0=