#include <bits/stdc++.h>
using namespace std;
int t, n, tp[50], mx, vis[100005], vis2[100005];
char s[105];
vector<int> v[55];
void dfs(int node, int sira) {
  if (vis[node] == 1) return;
  mx = max(mx, sira);
  vis[node] = 1;
  for (int j = 0; j < (int)v[node].size(); j++) {
    int go = v[node][j];
    dfs(go, sira + 1);
  }
}
void dfs2(int bas) {
  if (vis2[bas] == 1) return;
  vis2[bas] = 1;
  for (int i = 1; i <= tp[bas]; i++) {
    char q = bas + 'a';
    printf("%c", q);
  }
  for (int j = 0; j < (int)v[bas].size(); j++) {
    int go = v[bas][j];
    dfs2(go);
  }
}
int main() {
  scanf("%d", &t);
  for (int i = 1; i <= t; i++) {
    scanf("%s", s + 1);
    n = strlen(s + 1);
    memset(tp, 0, sizeof(tp));
    for (int j = 0; j <= 25; j++) v[j].clear();
    for (int j = 1; j <= n; j++) tp[s[j] - 'a']++;
    for (int j = 0; j <= 25; j++) {
      for (int k = 0; k <= 25; k++) {
        if (j == k || abs(j - k) == 1 || tp[j] == 0 || tp[k] == 0) continue;
        v[j].push_back(k);
        v[k].push_back(j);
      }
    }
    int say = 0;
    for (int j = 0; j <= 25; j++) {
      if (tp[j] > 0) say++;
    }
    int tut = -1;
    for (int j = 0; j <= 25; j++) {
      if (tp[j] == 0) continue;
      mx = 0;
      memset(vis, 0, sizeof(vis));
      dfs(j, 1);
      if (mx == say) {
        tut = j;
        break;
      }
    }
    if (tut == -1)
      printf("No answer\n");
    else {
      memset(vis2, 0, sizeof(vis2));
      dfs2(tut);
      printf("\n");
    }
  }
  return 0;
}
