改了好久还是WA了特来求助QWQ
#include<bits/stdc++.h>
using namespace std;
const int N=110;
bool a[N][N];
int n,l1,l2,deg[N];
int c[N],cnt;
string s1,s2;
void tupo(){
queue<int>q;
for(int i=0;i<26;i++)
if(!deg[i])
q.push(i);
while(!q.empty()){
int x=q.front();
q.pop();
c[++cnt]=x;
for(int y=0;y<26;y++)
if(a[x][y]){
deg[y]--;
if(!deg[y])
q.push(y);
}
}
}
int main(){
cin>>n>>s1;
n--;
while(n--){
cin>>s2;
l1=s1.size();l2=s2.size();
int i;
for(i=0;i<min(l1,l2);i++)
if(s1[i]!=s2[i]){
a[s1[i]-'a'][s2[i]-'a']=1;
deg[s2[i]-'a']++;
break;
}
if(i==min(l1,l2)&&l1>l2){
cout<<"Impossible"<<endl;
return 0;
}
s1=s2;
}
tupo();
if(cnt<26){
cout<<"Impossible"<<endl;
return 0;
}
for(int i=1;i<=cnt;i++)
cout<<(char)(c[i]+'a');
return 0;
}