This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<ll, ll>
#define pii pair<int, int>
#define fs first
#define sc second
#define pb push_back
string ans;
struct Node{
    Node *ch[26];
    bool b=0,m=0;
    void dfs(){
        if(b)ans+='P';
        for(int i=0;i<26;i++)if(ch[i]&&!ch[i]->m){
            ans+='a'+i;
            ch[i]->dfs();
        }
        for(int i=0;i<26;i++)if(ch[i]&&ch[i]->m){
            ans+='a'+i;
            ch[i]->dfs();
        }
        if(!m)ans+='-';
    }
};
void solve() {
    int n;
    cin>>n;
    string a[n];
    for(int i=0;i<n;i++)cin>>a[i];
    pii ln;
    for(int i=0;i<n;i++)ln=max(ln,{a[i].size(),i});
    Node *root=new Node();
    root->m=1;
    for(int i=0;i<n;i++){
        auto curr=root;
        for(char c:a[i]){
            int x=c-'a';
            if(curr->ch[x]==NULL)curr->ch[x]=new Node();
            curr=curr->ch[x];
            if(i==ln.sc)curr->m=1;
        }
        curr->b=1;
    }
    root->dfs();
    cout<<ans.size()<<'\n';
    for(char c:ans)cout<<c<<'\n';
}
int main() {
    #ifdef FPO
        freopen("in","r",stdin);
        freopen("out","w",stdout);
    #endif
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    solve();
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |