#include<iostream>
#include<string>

using namespace std;

int N;           //ilosc zestawow testowych

bool a[26][26];  //graf
bool jest[26];   //istniejace litery
bool odw[26];    //odwiedzone wierzcholki
string wynik;

inline int min(int a, int b) { a<b?a:b; }

void wczytaj()
{
  for (int i=0; i<26; i++)
  {
    jest[i]=false;
    for (int j=0; j<26; j++)
      a[i][j]=false;
  }
  string s1, s2;  
  cin >> s1;
  cin >> s2;
  if (s1.length()==1) jest[s1[0]-'A']=true;
  while (s2!="#") {
    int m = min(s1.length(),s2.length());
    for (int i=0; i<m; i++)
    {
      if (s1[i]!=s2[i]&&s2[i]!='#'){
        a[s1[i]-'A'][s2[i]-'A']=true;
        jest[s1[i]-'A']=true;
        jest[s2[i]-'A']=true;
        break;
      }
    }    
    s1=s2; 
    cin >> s2;
  } 
}

void DFS(int r)
{
  odw[r]=true;
  for (int i=0; i<26; i++)
    if (!odw[i] && a[r][i])
      DFS(i);
  wynik = (char)(r+'A') + wynik;
}

void odwiedz()
{
  wynik="";
  for (int i=0; i<26; i++)
    odw[i]=false;
  for (int i=0; i<26; i++)
    if (!odw[i] && jest[i]) DFS(i);
  cout << wynik << endl;
}

int main()
{
  ios_base::sync_with_stdio(0);
  cin >> N;
  for (int i=0; i<N; i++) {
    wczytaj();    
    odwiedz();
  }
  return 0;
}

