3
rjnflsbpxqivrcdjptj
vpojopbwbwbswdu
rydkiwnugwddcgcrng
 1
z
 30
b
u
p
n
f
m
t
i
j
k
p
h
a
c
w
z
z
p
t
d
o
w
u
q
l
y
i
o
a
u
 5
splt
ohqykk
xqpz
knojbur
pmfm
 2
hk
obsp
 5
zzxpfk
abcdefghijklmnopqrst
uvwxz
srgkjaskldfkln
vgnsdfdgfh
 2
rxscdzkkezud
wjehahqgouqvjienq
 5
ojdfhi
abcdefghijklmnopqrst
uvwxyz
ddfhdfhlasjt
qqq
 1
epkotfpkkrhhmuipmtdk
 10
kpmwcdoysw
gtpr
kuzoxmiixxbl
crgqtuo
jhbplhpklrgwnaugdf
zuxdaat
aycv
qwghrkqwkobrgevsjrk
tdxgc
lxyzgcmbzulcst
 5
dfijdfhi
abcdefghijklmnopqrst
uvwxy
kopsdfgiopjipw
jty
 2
xlaxwpjabtpwddc
txwdjmohrrszorrnomc
 1
a
 30
waiphwcqrrinr
o
qiqehzmgsjdoqd
kjexeesevrlowxhghq
judikhzkj
z
xo
lsdzypkfqro
sshgcxsky
gecntpcmoojfwp
svmytmcfhc
jrsrvsvbaiumlmkptn
s
wpcsovfjlyspviflk
ktvyzvddgllht
szahigtmklglrcocbo
znligfxkgxzkcfeu
liryvzmqwhr
xgrxkgiehxztv
etrjxdczppafly
jrdgajschhwsci
doxnxbjwptnimjmsuijx
zciwkbvrhgsjhrr
ehh
bzlnmd
xpbtbpftimnn
khbknqbvdkdd
mldj
skrvnyz
avptgpjmenfzfxwckmt
 30
e
x
itaubd
xcn
v
x
i
ci
aqs
zbi
q
cvdu
a
jos
qy
fjf
nayke
ge
s
q
qwad
gvz
o
ubn
nzoc
h
wnjwjrf
t
bq
bw
 1
b

a
 a
 e
 a
 a
 y
 b
 aa
 a
 ab
 z
 e
 b
 aa
 l
 a

#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
string num2str(int i) {
  stringstream ss;
  ss << i;
  return ss.str();
}
std::vector<std::string> Split(std::string str, std::string pattern) {
  std::string::size_type pos;
  std::vector<std::string> result;
  str += pattern;
  std::string::size_type size = str.size();
  for (int i = 0; i < size; i++) {
    pos = str.find(pattern, i);
    if (pos < size) {
      std::string s = str.substr(i, pos - i);
      result.push_back(s);
      i = pos + pattern.size() - 1;
    }
  }
  return result;
}
bool IsPrimer(int x) {
  if (x < 2) {
    return false;
  }
  for (int i = 2; i <= sqrt(double(x)); i++) {
    if (x % i == 0) {
      return false;
    }
  }
  return true;
}
template <typename T>
bool DesCmp(T a, T b) {
  return a > b;
}
template <typename T>
void Swap(T &a, T &b) {
  int temp = a;
  a = b;
  b = temp;
}
template <typename T>
void InputArray(T &a, int n) {
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
}
int main() {
  int n;
  scanf("%d", &n);
  string l[35];
  InputArray(l, n);
  bool num[800];
  memset(num, false, sizeof(num));
  for (int j = 0; j < n; j++) {
    for (int x = 0; x < l[j].size(); x++) {
      num[l[j][x] - 'a' + 1] = true;
    }
  }
  for (int j = 0; j < n; j++) {
    for (int x = 0; x < l[j].size() - 1; x++) {
      num[(l[j][x] - 'a' + 1) * 26 + l[j][x + 1] - 'a' + 1] = true;
    }
  }
  for (int i = 1; i < 800; i++) {
    string ans = "";
    if (!num[i]) {
      if (i <= 26) {
        printf("%c\n", 'a' + i - 1);
      } else {
        ans += (i / 26 + 'a' - 1);
        ans += i - (i / 26) * 26 + 'a' - 1;
        cout << ans << endl;
      }
      break;
    }
  }
  return 0;
}
