#include <cassert>
#include <cctype>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <vector>
#include <string>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <utility>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <numeric>
using namespace std;

#ifdef DBG
    #define dbg 1
    #define dpf(...) fprintf(stderr, __VA_ARGS__);fflush(stderr);
#else
    #define dbg 0
    #define dpf(...) 42
#endif
 
#define SIZE(x) int((x).size())
#define REP(i,c) for(auto &i : c)
#define pb push_back
#define eb emplace_back
typedef long long i64;
typedef unsigned long long u64;
const double EPS = 1e-12;
const int INF = 999999999;
typedef vector<int> VI;
typedef vector<string> VS;

const char DNA[]="ANOT";

int n;
char buf[100005];
VI a;
int c[4];

i64 Com(VI& start) {
    i64 res=0;
    for(int i=0;i<n;++i) {
        int d=a[i];
        res+=start[d]-i;
        ++start[d];
        for (int j = 0; j < 4; ++j)
            if (start[j] < start[d])
                ++start[j];
    }
    return res;
}

int Find(char c) {
    return find(DNA,DNA+4,c)-DNA;
}

void Solve() {
    scanf("%s",buf);
    n=strlen(buf);
    a.resize(n);
    fill(c,c+4,0);
    for(int i=0;i<n;++i) {
        a[i]=Find(buf[i]);
        ++c[a[i]];
    }

    VI p={0,1,2,3};
    VI start(4,0);
    VI ansp;
    i64 maxw=-1;
    do {
        int now=0;
        for(int i=0;i<4;++i) {
            start[p[i]]=now;
            now+=c[p[i]];
        }
        i64 w=Com(start);
        if(w>maxw) {
            maxw=w;
            ansp=p;
        }
    } while(next_permutation(p.begin(),p.end()));

    for(int i=0;i<4;++i) {
        int d=ansp[i];
        for(int j=0;j<c[d];++j) printf("%c",DNA[d]);
    }
    printf("\n");
}

int main() {
    int t;
    scanf("%d", &t);
    for (int i = 1; i <= t; ++i) {
        Solve();
    }

    return 0;
}
