//luogu
#include <bits/stdc++.h>
using namespace std;

constexpr size_t MAXN = 1e6 + 5, MAXA = 26;
int t;

struct Trie
{
	int trie[MAXN][MAXA], re[MAXN], alpha[MAXN], tot;
	bool tag[MAXN];

	inline void Clear() {
		for (int i = 0; i <= tot; i++) {
			re[i] = alpha[i] = 0;
			for (int j = 0; j < MAXA; j++)
				trie[i][j] = 0;
		}
	}

	inline void Insert(string s)
	{
		//cout << s << endl;
		int x = 0;
		for (int i = 0, len = s.size(); i < len; i++)
		{
			if (!trie[x][s[i] - 'a'])
				trie[x][s[i] - 'a'] = ++tot, re[tot] = x, alpha[tot] = s[i];
			x = trie[x][s[i] - 'a'];
		}
		tag[x] = true;
		return;
	}

	inline string Query() {
		queue<int> Q;
		Q.push(0);
		while (!Q.empty()) {
			int x = Q.front();
			//cout << x << " " << alpha[x] << endl;
			Q.pop();
			for (int i = 0; i < MAXA; i++) {
				if (trie[x][i]) Q.push(trie[x][i]);
				else {
					int p = x;
					string s = "";
					stack<char> st;
					st.push((char)(i + 'a'));
					while (p != 0) st.push(alpha[p]), p = re[p];
					while (!st.empty()) s += st.top(), st.pop();
					return s;
				}
			}
		}
	}
} T;

inline void Solve() {
	int n;
	cin >> n;
	string s;
	cin >> s;
	for (int i = 0; i < n; i++) T.Insert(s.substr(i, s.size() - i));
	cout << T.Query() << '\n';
}

signed main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> t;
	while (t--) T.Clear(), Solve();
}