#include <bits/stdc++.h>
using namespace std;
int INF = 1e9;
bool has_loop(vector<vector<int> > G) {
  int n = G.size();
  for (int k = 0; k < n; ++k) {
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
        G[i][j] = min(G[i][j], G[i][k] + G[k][j]);
      }
    }
  }
  for (int i = 0; i < n; ++i) {
    if (G[i][i] < INF) return true;
  }
  return false;
}
int main() {
  int n;
  while (cin >> n, n) {
    vector<string> S(n);
    for (int i = 0; i < n; ++i) {
      cin >> S[i];
    }
    if (n == 1) cout << "yes" << endl;
    vector<vector<int> > G(26, vector<int>(26, INF));
    bool f = true;
    for (int i = 1; i < n; ++i) {
      if (S[i - 1] == S[i]) continue;
      for (int j = 0; j < min(S[i].length(), S[i - 1].length()); ++j) {
        f = true;
        if (S[i][j] != S[i - 1][j]) {
          G[S[i - 1][j] - 'a'][S[i][j] - 'a'] = 1;
          f = false;
          break;
        }
      }
      if (f && S[i - 1].size() > S[i].size()) {
        cout << "no1" << endl;
        break;
      } else {
        f = false;
      }
    }
    if (f) continue;
    if (has_loop(G))
      cout << "no" << endl;
    else
      cout << "yes" << endl;
  }
  return 0;
}
