#include<stdio.h>
#include<string.h>
using namespace std;

char a[100];
char c[100],c1[100],c2[100],b[100],b1[100],b2[100];

int main()
{
    int n;
    int j=0,g=0;
    int m;
    scanf("%d\n",&n);
    gets(a);
    int d=strlen(a);
    for(int i=0;i<d;i++)
    {
        if(a[i]>64)
        {
            b[j]=a[i];
            j++;
        }
        if(a[i]>47&&a[i]<58)
        {
            c[g]=a[i];
            g++;
        }
    }
    for(int i=0;i<n;i++)
    {
        c1[i]=c[i];
        b1[i]=b[i];
    }

    for(int i=n-1;i>=0;i--)
    {
        if(c1[i]<c1[i-1])
        {
            for(int g=i;g>=0;g--)
            {
                if(c1[g]<c1[g-1])
                {
                    char t=c1[g];
                    c1[g]=c1[g-1];
                    c1[g-1]=t;
                    char p=b1[g];
                    b1[g]=b1[g-1];
                    b1[g-1]=p;
                }
            }
            i=n;
        }

    }
    for(int i=0;i<n;i++)
        if(i!=n-1)
            printf("%c%c ",b1[i],c1[i]);
        else
            printf("%c%c\n",b1[i],c1[i]);
    printf("Stable\n");

    for(int i=0;i<n;i++)
    {
        c2[i]=c[i];
        b2[i]=b[i];
    }

    for(int i=0;i<n;i++)
    {
        int minv=100005;
        for(int g=i+1;g<n;g++)
        {
            if(c2[g]<minv)
            {
                minv=c2[g];
                m=g;
            }

        }
        if(c2[m]<c2[i])
        {
            char t=b2[m];
            b2[m]=b2[i];
            b2[i]=t;
            char p=c2[m];
            c2[m]=c2[i];
            c2[i]=p;
        }
    }
    for(int i=0;i<n;i++)
        if(i!=n-1)
            printf("%c%c ",b2[i],c2[i]);
        else
            printf("%c%c\n",b2[i],c2[i]);
    if(strcmp(b1,b2))
        printf("Not stable\n");
    else
        printf("stable\n");
    return 0;
}