#include <bits/stdc++.h>

using namespace std;

#define MAXN 105

int N;
string A[MAXN];
vector<int> B;
bool dp[MAXN];

bool match(int a, int b, int pos) {
  string &s = A[B[b]];
  int len = s.size();
  for (int i = 0; i < len; i++) {
    if (A[a][pos + i] != s[i]) {
      return false;
    }
  }
  return true;
}

bool can(int p) {
  int L = (int) A[p].size();
  for (int i = 0; i <= L; i++) {
    dp[i] = false;
  }
  dp[0] = true;
  for (int i = 0; i < L; i++) {
    if (dp[i]) {
      for (int j = 0; j < N - 1; j++) {
        int crtLen = (int) A[B[j]].size();
        if (i + crtLen <= L && match(p, j, i)) {
          dp[i + crtLen] = true;
        }
      }
    }
  }
  return dp[L];
}

int main() {
	// assert(freopen("words.in", "r", stdin));
	// assert(freopen("words.out", "w", stdout));
	cin.sync_with_stdio(false);

	cin >> N;
  for (int i = 0; i < N; i++) {
    cin >> A[i];
  }

  int ans = 0;
  int pans = -1;
  for (int i = 0; i < N; i++) {
    B.clear();
    for (int j = 0; j < N; j++) {
      if (j != i) {
        B.push_back(j);
      }
    }
    if (can(i)) {
      int len = (int) A[i].size();
      if (len > ans) {
        ans = len;
        pans = i;
      }
    }
  }

  if (pans == -1) {
    cout << -1 << endl;
  } else {
    cout << A[pans] << endl;
  }

	return 0;
}