#include <bits/stdc++.h>
using namespace std;
struct before_main {
  before_main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
  }
} before_main;
template <class T1, class T2>
inline bool minimize(T1& a, T2 b) {
  return b < a && (a = b, 1);
}
template <class T1, class T2>
inline bool maximize(T1& a, T2 b) {
  return a < b && (a = b, 1);
}
int const inf = 1 << 29;
char premark = 'a' - 1;
bool dfs(map<char, vector<char>>& G, vector<bool>& vis, char c, set<char>& st) {
  for (auto& next : G[c]) {
    if (st.count(next)) return false;
    st.insert(next);
    if (vis[next - 'a']) continue;
    vis[next - 'a'] = 1;
    if (!dfs(G, vis, next, st)) return false;
    st.erase(next);
  }
  return true;
}
int main() {
  for (int N; cin >> N && N;) {
    vector<string> v;
    int L = 1;
    for (int i = 0; i < (int)N; i++) {
      string s;
      cin >> s;
      v.push_back(s);
      maximize(L, s.size());
    }
    for (int i = 0; i < (int)N; i++) {
      v[i].resize(L, premark);
    }
    map<char, vector<char>> G;
    vector<bool> vis(26);
    bool oks[26] = {};
    vector<char> starts;
    for (int i = 0; i < (int)N - 1; i++) {
      for (int ni = i + 1; ni < (int)N; ni++) {
        for (int j = 0; j < (int)L; j++) {
          if (v[i][j] == v[ni][j] && v[i][j] == premark) break;
          if (v[i][j] == v[ni][j]) continue;
          if (v[i][j] == premark) break;
          if (v[ni][j] == premark) goto ng;
          G[v[i][j]].push_back(v[ni][j]);
          break;
        }
      }
    }
    for (int i = 0; i < (int)26; i++)
      if (!G['a' + i].empty()) {
        sort((G['a' + i]).begin(), (G['a' + i]).end());
        G['a' + i].erase(unique((G['a' + i]).begin(), (G['a' + i]).end()),
                         G['a' + i].end());
      }
    for (int i = 0; i < (int)26; i++) {
      for (auto k : G[i + 'a'])
        if (k) {
          oks[k - 'a'] = 1;
        }
    }
    for (int i = 0; i < (int)26; i++)
      if (!oks[i]) starts.push_back(i + 'a');
    for (auto s : starts) {
      vis[s - 'a'] = 1;
      set<char> st;
      if (!dfs(G, vis, s, st)) goto ng;
    }
    cout << "yes" << endl;
    continue;
  ng:;
    cout << "no" << endl;
  }
  return 0;
}
