AC#2、#9,其他全WA,不知道哪错了。
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5,M=1e7+5,C=26;
int n,m;
char c[M];
struct Trie{
int h,x[N][C];
bool f[N],g[N],z;
void insert(string s){
int u=0;
for(int i=0,c;i<s.size();i++){
c=s[i]-'a';
!x[u][c]&&(x[u][c]=++h);
u=x[u][c];
}
f[u]=1;
}
void vis(string s){
int u=0;
for(int i=0,c;i<s.size();i++)
c=s[i]-'a',g[u=x[u][c]]=1;
}
void dfs(int u){
f[u]&&(c[++m]='P');
int p=-1;
for(int i=0;i<26;i++)
if(g[x[u][i]])p=i;
else if(x[u][i])
c[++m]='a'+i,dfs(x[u][i]);
if(~p)
c[++m]='a'+p,dfs(x[u][p]);
!(z|=g[u]&&!~p)&&(c[++m]='_');
}
}t;
int main(){
cin>>n;
string z="";
for(int i=1;i<=n;i++){
string s;
cin>>s,t.insert(s);
s.size()>z.size()&&(z=s,1);
}
t.vis(z),t.dfs(0);
cout<<m<<"\n";
for(int i=1;i<=m;i++)
cout<<c[i]<<"\n";
return 0;
}