#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200050;
long long inp1, inp2, inp3;
long long n, fr[MAXN], to[MAXN], vis[MAXN];
char s[MAXN];
string ans;
int main() {
  memset(fr, -1, sizeof fr);
  memset(to, -1, sizeof to);
  scanf("%lld", &n);
  for (long long i = 1; i <= n; i++) {
    scanf("%s", s);
    long long len = strlen(s);
    for (long long i = 0; i < len; i++) {
      vis[s[i] - 'a'] = 1;
      if (i > 0) {
        if (~fr[s[i] - 'a'] && fr[s[i] - 'a'] != s[i - 1] - 'a') {
          printf("NO");
          return 0;
        }
        fr[s[i] - 'a'] = s[i - 1] - 'a';
      }
      if (i < len - 1) {
        if (~to[s[i] - 'a'] && to[s[i] - 'a'] != s[i + 1] - 'a') {
          printf("NO");
          return 0;
        }
        to[s[i] - 'a'] = s[i + 1] - 'a';
      }
    }
  }
  for (long long i = 0; i < 27; i++) {
    if (vis[i] && fr[i] == -1) {
      long long tmp = i;
      while (~tmp) {
        vis[tmp] = 0;
        ans += (char)(tmp + 'a');
        tmp = to[tmp];
      }
    }
  }
  for (long long i = 0; i < 27; i++) {
    if (vis[i]) {
      printf("NO");
      return 0;
    }
  }
  cout << ans;
  return 0;
}
