#include <bits/stdc++.h>
using namespace std;

#define dump(...) cout<<"# "<<#__VA_ARGS__<<'='<<(__VA_ARGS__)<<endl
#define repi(i,a,b) for(int i=int(a);i<int(b);i++)
#define peri(i,a,b) for(int i=int(b);i-->int(a);)
#define rep(i,n) repi(i,0,n)
#define per(i,n) peri(i,0,n)
#define all(c) begin(c),end(c)
#define mp make_pair
#define mt make_tuple

typedef unsigned int uint;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<double> vd;
typedef vector<vd> vvd;
typedef vector<string> vs;

constexpr int INF=1e9;
constexpr int MOD=1e9+7;
constexpr double EPS=1e-9;

template<typename T1,typename T2>
ostream& operator<<(ostream& os,const pair<T1,T2>& p){
	return os<<'('<<p.first<<','<<p.second<<')';
}
template<typename Ostream,typename Container>
Ostream& operator<<(Ostream& os,const Container& c){
	os<<'[';
	for(auto i=begin(c);i!=end(c);++i)
		os<<(i==begin(c)?"":" ")<<*i;
	return os<<']';
}

bool solve(vs ss)
{
	ss.erase(unique(all(ss)),end(ss));
	vvi d(26,vi(26));
	rep(i,26) d[i][i]=0;
	rep(i,ss.size()-1){
		const string &s1=ss[i],&s2=ss[i+1];
		for(int j=0;;j++){
			if(j==s2.size()) return false;
			if(j==s1.size()) break;
			if(s1[j]!=s2[j]){
				int u=s1[j]-'a',v=s2[j]-'a';
				d[u][v]=1;
				break;
			}
		}
	}
	rep(k,26) rep(i,26) rep(j,26) d[i][j]|=d[i][k]&d[k][j];
	rep(i,26) if(d[i][i]) return false;
	return true;
}

int main()
{
	for(int n;cin>>n && n;){
		vs ss(n);
		rep(i,n) cin>>ss[i];
		cout<<(solve(ss)?"yes":"no")<<endl;
	}
}