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>
using namespace std;
template <class T>
bool isPrime(T x) {
  if (x <= 1) return false;
  T i;
  for (i = 2; i * i <= x; i++)
    if (x % i == 0) return false;
  return true;
}
template <class T>
class Prime {
 public:
  vector<T> z;
  Prime() {
    z.resize(1e5 + 7);
    for (int i = (0); i < (((int)z.size())); i++) z[i] = 1;
    z[0] = 0;
    z[1] = 0;
    T j;
    for (int i = (2); i < (((int)z.size())); i++) {
      if (z[i]) {
        j = i + i;
        while (j < ((int)z.size())) {
          z[j] = 0;
          j += i;
        }
      }
    }
  }
};
template <class T>
double dist(T x1, T y1, T x2, T y2) {
  return sqrt(1. * (x2 - x1) * (x2 - x1) + 1. * (y2 - y1) * (y2 - y1));
}
template <class T>
class Point {
 public:
  T x, y;
  Point() {}
  Point(T a, T b) : x(a), y(b) {}
  bool operator==(const Point& tmp) const { return (x == tmp.x && y == tmp.y); }
  Point operator-(const Point& tmp) const {
    return Point<T>(x - tmp.x, y - tmp.y);
  }
};
char toLowerCase(char x) { return (x + 32); }
char toUpperCase(char x) { return (x - 32); }
bool isUpperCase(char x) { return (65 <= x && x <= 90) ? 1 : 0; }
bool isLowerCase(char x) { return (97 <= x && x <= 122) ? 1 : 0; }
bool isAlpha(char x) { return (isUpperCase(x) || isLowerCase(x)) ? 1 : 0; }
bool isDigit(char x) { return ('0' <= x && x <= '9') ? 1 : 0; }
template <class T>
T toDec(string s) {
  stringstream is(s);
  T res;
  is >> res;
  return res;
}
template <class T>
string toStr(T n) {
  string s;
  stringstream is;
  is << n;
  is >> s;
  return s;
}
template <class T>
void checkmin(T& a, T b) {
  if (a > b) a = b;
}
template <class T>
void checkmax(T& a, T b) {
  if (a < b) a = b;
}
int main() {
  int n, k;
  cin >> n;
  string s, tmp;
  vector<string> as(n);
  for (int i = 0; i < n; i++) cin >> as[i];
  s = "";
  bool ok, found = false;
  k = 0;
  while (!found) {
    for (char i = 'a'; i < 'z'; i++) {
      tmp = s;
      tmp += i;
      ok = true;
      for (int j = 0; j < n; j++) {
        if (as[j].find(tmp) != string::npos) {
          ok = false;
          break;
        }
      }
      if (ok) {
        cout << tmp << "\n";
        return 0;
      }
    }
    s += 'a';
  }
  return 0;
}
