#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
const int N = 10;
struct Node {
int next[N];
bool terminal;
Node() {
for (int i = 0; i < N; i++) {
next[i] = -1;
}
terminal = false;
}
};
vector<Node> trie;
void add_string(const string& s) {
int v = 0;
for (char c : s) {
int idx = c - 'a';
if (trie[v].next[idx] == -1) {
trie.push_back(Node());
trie[v].next[idx] = trie.size() - 1;
}
v = trie[v].next[idx];
}
trie[v].terminal = true;
}
string find_min_missing_string(const string& s) {
trie.push_back(Node());
for (int i = 0; i < s.size(); i++) {
string substr = s.substr(i, 1);
add_string(substr);
}
string min_missing = "";
for (int len = 1; len <= s.size(); len++) {
for (int i = 0; i < (1 << (len * N)); i++) {
string substr;
for (int j = 0; j < len; j++) {
int idx = (i >> (j * N)) & ((1 << N) - 1);
substr += 'a' + idx;
}
int v = 0;
bool found = false;
for (char c : substr) {
int idx = c - 'a';
if (trie[v].next[idx] == -1) {
found = true;
break;
}
v = trie[v].next[idx];
}
if (!found) {
if (min_missing.empty() || substr < min_missing) {
min_missing = substr;
}
}
}
}
return min_missing;
}
int main() {
int n;
string s;
cin >> n >> s;
string min_missing = find_min_missing_string(s);
cout << min_missing << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBOID0gMTA7CgpzdHJ1Y3QgTm9kZSB7CiAgICBpbnQgbmV4dFtOXTsKICAgIGJvb2wgdGVybWluYWw7CiAgICBOb2RlKCkgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgICAgIG5leHRbaV0gPSAtMTsKICAgICAgICB9CiAgICAgICAgdGVybWluYWwgPSBmYWxzZTsKICAgIH0KfTsKCnZlY3RvcjxOb2RlPiB0cmllOwoKdm9pZCBhZGRfc3RyaW5nKGNvbnN0IHN0cmluZyYgcykgewogICAgaW50IHYgPSAwOwogICAgZm9yIChjaGFyIGMgOiBzKSB7CiAgICAgICAgaW50IGlkeCA9IGMgLSAnYSc7CiAgICAgICAgaWYgKHRyaWVbdl0ubmV4dFtpZHhdID09IC0xKSB7CiAgICAgICAgICAgIHRyaWUucHVzaF9iYWNrKE5vZGUoKSk7CiAgICAgICAgICAgIHRyaWVbdl0ubmV4dFtpZHhdID0gdHJpZS5zaXplKCkgLSAxOwogICAgICAgIH0KICAgICAgICB2ID0gdHJpZVt2XS5uZXh0W2lkeF07CiAgICB9CiAgICB0cmllW3ZdLnRlcm1pbmFsID0gdHJ1ZTsKfQoKc3RyaW5nIGZpbmRfbWluX21pc3Npbmdfc3RyaW5nKGNvbnN0IHN0cmluZyYgcykgewogICAgdHJpZS5wdXNoX2JhY2soTm9kZSgpKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5zaXplKCk7IGkrKykgewogICAgICAgIHN0cmluZyBzdWJzdHIgPSBzLnN1YnN0cihpLCAxKTsKICAgICAgICBhZGRfc3RyaW5nKHN1YnN0cik7CiAgICB9CgogICAgc3RyaW5nIG1pbl9taXNzaW5nID0gIiI7CiAgICBmb3IgKGludCBsZW4gPSAxOyBsZW4gPD0gcy5zaXplKCk7IGxlbisrKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoMSA8PCAobGVuICogTikpOyBpKyspIHsKICAgICAgICAgICAgc3RyaW5nIHN1YnN0cjsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBsZW47IGorKykgewogICAgICAgICAgICAgICAgaW50IGlkeCA9IChpID4+IChqICogTikpICYgKCgxIDw8IE4pIC0gMSk7CiAgICAgICAgICAgICAgICBzdWJzdHIgKz0gJ2EnICsgaWR4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludCB2ID0gMDsKICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICBmb3IgKGNoYXIgYyA6IHN1YnN0cikgewogICAgICAgICAgICAgICAgaW50IGlkeCA9IGMgLSAnYSc7CiAgICAgICAgICAgICAgICBpZiAodHJpZVt2XS5uZXh0W2lkeF0gPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2ID0gdHJpZVt2XS5uZXh0W2lkeF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgICAgaWYgKG1pbl9taXNzaW5nLmVtcHR5KCkgfHwgc3Vic3RyIDwgbWluX21pc3NpbmcpIHsKICAgICAgICAgICAgICAgICAgICBtaW5fbWlzc2luZyA9IHN1YnN0cjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbWluX21pc3Npbmc7Cn0KCmludCBtYWluKCkgewogICAgaW50IG47CiAgICBzdHJpbmcgczsKICAgIGNpbiA+PiBuID4+IHM7CgogICAgc3RyaW5nIG1pbl9taXNzaW5nID0gZmluZF9taW5fbWlzc2luZ19zdHJpbmcocyk7CiAgICBjb3V0IDw8IG1pbl9taXNzaW5nIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K