#include <iostream>
#include <string>
#include <math.h>
using std::cin;
using std::endl;
using std::cout;
using std::string;
int granice(string,int);
string odwroc(string);
string usun(string);
int main()
{
int d;
cin>>d;
while(d--)
{
int ile;
string napis;
cin>>ile>>napis;
napis=odwroc(napis);
napis=usun(napis);
int wynik=granice(napis,ile);
cout<<wynik<<endl;
}
return 0;
}
string odwroc(string napis)
{
string wynik=napis;
for(unsigned int i=0; i<napis.length(); i++)
{
wynik[i]=napis[napis.length()-1-i];
}
return wynik;
}
int granice(string napis,int ile)
{
int p=1,q=ile;
for(unsigned int i=0; i<napis.length(); i++)
{
if(napis[i]=='A')
q=(p+q)/2;
else
p=(p+q)/2+1;
}
return q;
}
string usun(string napis)
{
string wynik="";
while(napis.length()>0)
{
string kopia="";
if(napis[0]=='B')
{
wynik+=napis[0];
napis=napis.erase(0,1);
if(napis.length()>1)
{
int ile_razy=log2(napis.length()+2)-1;
for(int j=0; j<ile_razy; j++)
{
napis=napis.erase(pow(2,j+1)-1,pow(2,j));
}
}
}
else
{
wynik+=napis[0];
napis=napis.erase(0,1);
if(napis.length()>1)
{
int ile_razy=log2(napis.length()+2)-1;
for(int j=0; j<ile_razy; j++)
{
napis=napis.erase(pow(2,j)-1,pow(2,j));
}
}
}
}
return wynik;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWF0aC5oPgp1c2luZyBzdGQ6OmNpbjsKdXNpbmcgc3RkOjplbmRsOwp1c2luZyBzdGQ6OmNvdXQ7CnVzaW5nIHN0ZDo6c3RyaW5nOwppbnQgZ3JhbmljZShzdHJpbmcsaW50KTsKc3RyaW5nIG9kd3JvYyhzdHJpbmcpOwpzdHJpbmcgdXN1bihzdHJpbmcpOwppbnQgbWFpbigpCnsKICAgIGludCBkOwogICAgY2luPj5kOwogICAgd2hpbGUoZC0tKQogICAgewogICAgICAgIGludCBpbGU7CiAgICAgICAgc3RyaW5nIG5hcGlzOwogICAgICAgIGNpbj4+aWxlPj5uYXBpczsKICAgICAgICBuYXBpcz1vZHdyb2MobmFwaXMpOwogICAgICAgIG5hcGlzPXVzdW4obmFwaXMpOwogICAgICAgIGludCB3eW5paz1ncmFuaWNlKG5hcGlzLGlsZSk7CiAgICAgICAgY291dDw8d3luaWs8PGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQpzdHJpbmcgb2R3cm9jKHN0cmluZyBuYXBpcykKewogICAgc3RyaW5nIHd5bmlrPW5hcGlzOwogICAgZm9yKHVuc2lnbmVkIGludCBpPTA7IGk8bmFwaXMubGVuZ3RoKCk7IGkrKykKICAgIHsKICAgICAgICB3eW5pa1tpXT1uYXBpc1tuYXBpcy5sZW5ndGgoKS0xLWldOwogICAgfQogICAgcmV0dXJuIHd5bmlrOwp9CmludCBncmFuaWNlKHN0cmluZyBuYXBpcyxpbnQgaWxlKQp7CiAgICBpbnQgcD0xLHE9aWxlOwogICAgZm9yKHVuc2lnbmVkIGludCBpPTA7IGk8bmFwaXMubGVuZ3RoKCk7IGkrKykKICAgIHsKICAgICAgICBpZihuYXBpc1tpXT09J0EnKQogICAgICAgICAgICBxPShwK3EpLzI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBwPShwK3EpLzIrMTsKICAgIH0KICAgIHJldHVybiBxOwp9CnN0cmluZyB1c3VuKHN0cmluZyBuYXBpcykKewogICAgc3RyaW5nIHd5bmlrPSIiOwogICAgd2hpbGUobmFwaXMubGVuZ3RoKCk+MCkKICAgIHsKICAgICAgICBzdHJpbmcga29waWE9IiI7CiAgICAgICAgaWYobmFwaXNbMF09PSdCJykKICAgICAgICB7CiAgICAgICAgICAgIHd5bmlrKz1uYXBpc1swXTsKICAgICAgICAgICAgbmFwaXM9bmFwaXMuZXJhc2UoMCwxKTsKICAgICAgICAgICAgaWYobmFwaXMubGVuZ3RoKCk+MSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IGlsZV9yYXp5PWxvZzIobmFwaXMubGVuZ3RoKCkrMiktMTsKICAgICAgICAgICAgICAgIGZvcihpbnQgaj0wOyBqPGlsZV9yYXp5OyBqKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbmFwaXM9bmFwaXMuZXJhc2UocG93KDIsaisxKS0xLHBvdygyLGopKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICB3eW5pays9bmFwaXNbMF07CiAgICAgICAgICAgIG5hcGlzPW5hcGlzLmVyYXNlKDAsMSk7CiAgICAgICAgICAgIGlmKG5hcGlzLmxlbmd0aCgpPjEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpbnQgaWxlX3Jhenk9bG9nMihuYXBpcy5sZW5ndGgoKSsyKS0xOwogICAgICAgICAgICAgICBmb3IoaW50IGo9MDsgajxpbGVfcmF6eTsgaisrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG5hcGlzPW5hcGlzLmVyYXNlKHBvdygyLGopLTEscG93KDIsaikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICByZXR1cm4gd3luaWs7Cn0K