#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, pre[26], nxt[26], fre[26], vis[26];
char str[N];
void solve() {
  scanf("%d", &n);
  memset(pre, -1, sizeof(pre));
  memset(nxt, -1, sizeof(nxt));
  for (int i = 0; i < n; i++) {
    memset(fre, 0, sizeof(fre));
    scanf("%s", str);
    int sz = strlen(str);
    for (int j = 0; j < sz; j++) {
      fre[str[j] - 'a']++;
      vis[str[j] - 'a'] = 1;
      if (fre[str[j] - 'a'] > 1) {
        puts("NO");
        return;
      }
    }
    for (int j = 0; j < sz; j++) {
      if (j) {
        if (pre[str[j] - 'a'] != -1 && pre[str[j] - 'a'] != str[j - 1] - 'a') {
          puts("NO");
          return;
        } else
          pre[str[j] - 'a'] = str[j - 1] - 'a';
      }
      if (j < sz - 1) {
        if (nxt[str[j] - 'a'] != -1 && nxt[j] != str[j + 1] - 'a') {
          puts("NO");
          return;
        } else
          nxt[str[j] - 'a'] = str[j + 1] - 'a';
      }
    }
  }
  for (int i = 0; i < 26; i++) {
    if (pre[i] == -1 && vis[i]) {
      int cur = i;
      while (cur != -1) {
        printf("%c", cur + 'a');
        cur = nxt[cur];
      }
    }
  }
  puts("");
}
int main() {
  solve();
  return 0;
}
