#include <bits/stdc++.h>
struct TNode {
  TNode* children[30];
  TNode() {
    for (long i = 0; i < 30; i++) children[i] = NULL;
  }
} * Root;
long n, i;
std::string s, result("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
bool found = false;
void puts(std::string s, TNode* node) {
  if (node->children[s[0] - 'a'] == NULL) {
    node->children[s[0] - 'a'] = new TNode();
  }
  if (s.length() > 1) {
    puts(s.substr(1), node->children[s[0] - 'a']);
  }
}
bool gt(std::string s1, std::string s2) {
  if (s1.length() != s2.length()) {
    return s1.length() > s2.length();
  } else {
    return s1 > s2;
  }
}
void find(TNode* node, std::string s) {
  if (gt(s, result)) return;
  char i;
  for (i = 'a'; i <= 'z'; i++) {
    if (NULL == node->children[i - 'a']) {
      if (gt(result, s + i)) result = s + i;
      return;
    }
  }
  for (i = 'a'; i <= 'z'; i++) {
    if (found) return;
    find(node->children[i - 'a'], s + i);
  }
}
int main() {
  std::cin >> n;
  Root = new TNode();
  for (long i = 0; i < n; i++) {
    std::cin >> s;
    while (true) {
      puts(s, Root);
      if (s.length() == 1) break;
      s = s.substr(1);
    }
  }
  find(Root, "");
  std::cout << result << std::endl;
  return 0;
}
