Problem Statement

We found a dictionary of the Ancient Civilization Mayo (ACM) during excavation of the ruins. After analysis of the dictionary, we revealed they used a language that had not more than 26 letters. So one of us mapped each letter to a different English alphabet and typed all the words in the dictionary into a computer.

How the words are ordered in the dictionary, especially whether they are ordered lexicographically, is an interesting topic to many people. As a good programmer, you are requested to write a program to judge whether we can consider the words to be sorted in a lexicographical order.

Note: In a lexicographical order, a word always precedes other words it is a prefix of. For example, `ab` precedes `abc`, `abde`, and so on.



Input

The input consists of multiple datasets. Each dataset is formatted as follows:


n
string_1
...
string_n


Each dataset consists of n+1 lines. The first line of each dataset contains an integer that indicates n (1 \leq n \leq 500). The i-th line of the following n lines contains string_i, which consists of up to 10 English lowercase letters.

The end of the input is `0`, and this should not be processed.

Output

Print either `yes` or `no` in a line for each dataset, in the order of the input. If all words in the dataset can be considered to be ordered lexicographically, print `yes`. Otherwise, print `no`.

Example

Input

4
cba
cab
b
a
3
bca
ab
a
5
abc
acb
b
c
c
5
abc
acb
c
b
b
0


Output

yes
no
yes
no
/*
 * 2534.cc: 
 */

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<functional>
 
using namespace std;

/* constant */

const int MAX_N = 500;

typedef long long ll;

const int INF = 1 << 30;
const ll LINF = 1LL << 60;

/* typedef */

typedef vector<int> vi;
typedef queue<int> qi;
typedef pair<int,int> pii;

/* global variables */

string ss[MAX_N];

/* subroutines */

int cs[26][26];

/* main */

int main() {
  for (;;) {
    int n;
    cin >> n;
    if (n == 0) break;

    for (int i = 0; i < n; i++) cin >> ss[i];

    memset(cs, 0, sizeof(cs));

    bool ok = true;
    for (int i = 0; ok && i < n; i++) {
      for (int j = 0; ok && j < i; j++) {
	string &si = ss[i], &sj = ss[j];

	int k = 0;
	while (k < si.size() && k < sj.size() && si[k] == sj[k]) k++;
	if (k >= si.size()) ok = (k >= sj.size());
	else if (k < sj.size()) {
	  int ci = si[k] - 'a', cj = sj[k] - 'a';
	  if (cs[ci][cj] != 0) {
	    if (cs[ci][cj] < 0) ok = false;
	  }
	  else {
	    cs[ci][cj] = 1;
	    cs[cj][ci] = -1;
	  }
	}
	
	//printf("(%d,%d): ", i, j);
	//cout << si << ' ' << sj << ' ' << ok << endl;
      }
    }

    cout << (ok ? "yes" : "no") << endl;
  }

  return 0;
}