#include <bits/stdc++.h>

using namespace std;

string ltrim(const string &);
string rtrim(const string &);

/*
 * Complete the 'morganAndString' function below.
 *
 * The function is expected to return a STRING.
 * The function accepts following parameters:
 *  1. STRING a
 *  2. STRING b
 */

string morganAndString(string a, string b) {
    string result;
    result.reserve(a.size() + b.size() + 1);
    for(auto i = 0, j = 0; i < a.size() || j < b.size(); ) {
        auto k = i, l = j;
        while(k < a.size() && l < b.size() && a[k] == b[l]) {
            k++;
            l++;
        }
        if(k == a.size()) {
            for(l = j; j < b.size() && b[j] == b[l]; j++) {
                result.push_back(b[j]);
            }
        } else if(l == b.size()) {
            for(k = i; i < a.size() && a[i] == a[k]; i++) {
                result.push_back(a[i]);
            }
        } else if(a[k] < b[l]) {
            for(k = i; i < a.size() && a[i] == a[k]; i++) {
                result.push_back(a[i]);
            }
        } else {
            for(l = j; j < b.size() && b[j] == b[l]; j++) {
                result.push_back(b[j]);
            }
        }
    }
    return result;
}

int main()
{
    ofstream fout(getenv("OUTPUT_PATH"));

    string t_temp;
    getline(cin, t_temp);

    int t = stoi(ltrim(rtrim(t_temp)));

    for (int t_itr = 0; t_itr < t; t_itr++) {
        string a;
        getline(cin, a);

        string b;
        getline(cin, b);

        string result = morganAndString(a, b);

        fout << result << "\n";
    }

    fout.close();

    return 0;
}

string ltrim(const string &str) {
    string s(str);

    s.erase(
        s.begin(),
        find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace)))
    );

    return s;
}

string rtrim(const string &str) {
    string s(str);

    s.erase(
        find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(),
        s.end()
    );

    return s;
}