#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = MOD + 1;
const long double EPS = 1e-12;
template <class T>
T &chmin(T &a, const T &b) {
  return a = min(a, b);
}
template <class T>
T &chmax(T &a, const T &b) {
  return a = max(a, b);
}
int main() {
  int n;
  while (cin >> n, n) {
    vector<vector<int> > g(27);
    vector<string> v;
    for (int i = (0); i < (n); i++) {
      string s;
      cin >> s;
      while (s.size() < 10) s += 'z' + 1;
      v.push_back(s);
    }
    for (int i = (0); i < (n); i++)
      for (int j = (0); j < (i); j++) {
        string u = v[i], d = v[j];
        int t = 0;
        while (u[t] == d[t] && t < 10) t++;
        if (t == 10) continue;
        int un = u[t] - 'a', dn = d[t] - 'a';
        if (un != dn) g[un].push_back(dn);
      }
    bool f = true;
    if (g[26].size() > 0) f = false;
    for (int i = (0); i < (26); i++) {
      sort(g[i].begin(), g[i].end());
      g[i].erase(unique(g[i].begin(), g[i].end()), g[i].end());
    }
    vector<bool> vis(26);
    for (int i = (0); i < (26); i++) {
      stack<int> st;
      st.push(i);
      while (st.size()) {
        int tmp = st.top();
        st.pop();
        for (int j = (0); j < (g[tmp].size()); j++) {
          if (g[tmp][j] == i) {
            f = false;
            goto end;
          }
          st.push(g[tmp][j]);
        }
      }
    }
  end:;
    puts(f ? "yes" : "no");
  }
  return 0;
}
