1<=n<=100个字符串
按一定顺序排序后 是否满足前一个是后一个的子串
5
a
aba
abacaba
ba
aba
YES
a
ba
aba
aba
abacaba
https://codeforces.com/contest/988/problem/B
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+5;
const ll mod=1e9+7;
ll n,a[maxn],ans,cnt,f;
bool cmp(string a,string b){
return a.size()<b.size();
}
int main(){
cin>>n;
vector<string> s(n);
for(int i=0;i<n;i++){
cin>>s[i];
}
sort(s.begin(), s.end(),cmp);
f=1;
for(int i=0;i<=n-2;i++){
if(s[i+1].find(s[i])==string::npos){
f=0;
break;
}
}
if(f){
cout<<"YES"<<endl;
for(auto k:s){
cout<<k<<endl;
}
}
else
cout<<"NO"<<endl;
return 0;
}