#include <bits/stdc++.h>
using namespace std;
#define fastIO() ios::sync_with_stdio(false); cin.tie(nullptr);
void solve() {
int n;
cin >> n;
string a, b;
cin >> a >> b;
int pos = -1;
// Find first position where going down is strictly better
for (int i = 0; i < n; i++) {
if (b[i] < a[i]) {
pos = i;
break;
}
if (b[i] > a[i]) {
break;
}
}
if (pos == -1) pos = n - 1;
// Construct lexicographically smallest string
string result = a.substr(0, pos + 1) + b.substr(pos);
// Count number of valid paths
long long countPaths = 1;
for (int i = pos - 1; i >= 0; i--) {
if (a[i] == b[i])
countPaths++;
else
break;
}
cout << result << "\n";
cout << countPaths << "\n";
}
int main() {
fastIO();
int t;
cin >> t;
while (t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGZhc3RJTygpIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShudWxscHRyKTsKCnZvaWQgc29sdmUoKSB7CiAgICBpbnQgbjsKICAgIGNpbiA+PiBuOwoKICAgIHN0cmluZyBhLCBiOwogICAgY2luID4+IGEgPj4gYjsKCiAgICBpbnQgcG9zID0gLTE7CgogICAgLy8gRmluZCBmaXJzdCBwb3NpdGlvbiB3aGVyZSBnb2luZyBkb3duIGlzIHN0cmljdGx5IGJldHRlcgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpZiAoYltpXSA8IGFbaV0pIHsKICAgICAgICAgICAgcG9zID0gaTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmIChiW2ldID4gYVtpXSkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgaWYgKHBvcyA9PSAtMSkgcG9zID0gbiAtIDE7CgogICAgLy8gQ29uc3RydWN0IGxleGljb2dyYXBoaWNhbGx5IHNtYWxsZXN0IHN0cmluZwogICAgc3RyaW5nIHJlc3VsdCA9IGEuc3Vic3RyKDAsIHBvcyArIDEpICsgYi5zdWJzdHIocG9zKTsKCiAgICAvLyBDb3VudCBudW1iZXIgb2YgdmFsaWQgcGF0aHMKICAgIGxvbmcgbG9uZyBjb3VudFBhdGhzID0gMTsKICAgIGZvciAoaW50IGkgPSBwb3MgLSAxOyBpID49IDA7IGktLSkgewogICAgICAgIGlmIChhW2ldID09IGJbaV0pCiAgICAgICAgICAgIGNvdW50UGF0aHMrKzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGJyZWFrOwogICAgfQoKICAgIGNvdXQgPDwgcmVzdWx0IDw8ICJcbiI7CiAgICBjb3V0IDw8IGNvdW50UGF0aHMgPDwgIlxuIjsKfQoKaW50IG1haW4oKSB7CiAgICBmYXN0SU8oKTsKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0=