#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>

using namespace std;

const int Nmax = 105;

int i, n, j;
bool dp[Nmax];
string s, a[Nmax], ans;

struct Trie
{
    Trie *son[26];
    bool ap;

    Trie()
    {
        memset(son, 0, sizeof(son));
        ap = 0;
    }

    void add(int pos, bool add)
    {
        if(pos == s.size())
        {
            ap = add;
            return;
        }

        int ch = s[pos] - 'a';
        if(!son[ch]) son[ch] = new Trie();
        son[ch] -> add(pos+1, add);
    }

    void expand(int pos)
    {
        if(ap) dp[pos] = 1;
        if(pos == s.size()) return;

        int ch = s[pos] - 'a';
        if(!son[ch]) return;

        son[ch] -> expand(pos+1);
    }
} *root = new Trie();

int main()
{
   // freopen("input", "r", stdin);

    cin.sync_with_stdio(false);

    cin >> n;
    for(i=1; i<=n; ++i)
    {
        cin >> a[i];
        s = a[i];
        root->add(0, 1);
    }

    for(i=1; i<=n; ++i)
    {
        s = a[i];
        //cerr << s << '\n';
        root->add(0, 0);
        memset(dp, 0, sizeof(dp));

        dp[0] = 1;
        for(j=0; j<s.size(); ++j)
        if(dp[j])
            root->expand(j);

        if(dp[j] && ans.size() < s.size()) ans = s;

        root->add(0, 1);
    }

    if(ans.size() == 0) cout << -1 << '\n';else
    cout << ans << '\n';

    return 0;
}