#include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn=44; const int maxm=(1<<20)+10; const int INF=1e9; char a[maxn]; int c[maxn],b[maxn],x,y,xx,yy,sx,sy,t,f[maxn],g[maxm],len[maxn]; struct node{ int id,w,flag; bool operator <(const node &a)const{ if(id==a.id)return w>1; } return x; } void init() { for(int i=0;i<=22;i++) { f[i]=(1<>(yy-xx))^x)return ; e[t].flag=0; e[t].id=len[yy-xx]+(y&f[yy-xx]); e[t++].w=sy-sx; } void judge2() { int i,j,k,p; if(x^(y&f[xx]))return ; e[t].flag=1; e[t].id=len[yy-xx]+(y>>xx); e[t++].w=sy-sx; } int main() { init(); int n; while(scanf("%d",&n)!=EOF) { if(n==0)break; int i,j,k=0,ans=INF; scanf("%s",a); for(i=0;i<2*n;i++) { b[i]=a[i]-'a'; k+=b[i]; } for(i=0;in-g[i])continue; x=y=xx=yy=sx=sy=0; for(j=n-1;j>=0;j--) { if((1<n-g[i])continue; x=y=xx=yy=sx=sy=0; for(j=n-1;j>=0;j--) { if((1<