#include <bits/stdc++.h>
using namespace std;
#define ll long long
struct vert {
    array<int, 26> mp = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
    int o = -1;
    bool s = 0;
    char c = '_';
};
vert tr[(int)5e5+3];
int trsize = 1;
int add(int v, string &s, int i) {
    if (i == (int)s.size()) {
        tr[v].s = 1;
        return v;
    }
    if (tr[v].mp[s[i]-'a'] == -1) {
        tr[v].mp[s[i]-'a'] = trsize;
        tr[trsize].o = v;
        tr[trsize].c = s[i];
        trsize++;
    }
    return add(tr[v].mp[s[i]-'a'], s, i+1);
}
void print(int v, string &s) {
    array<bool, (int)(5e5+3)> odw;
    array<queue<int>, (int)(5e5+3)> q;
    for (int i = 0; i < (int)trsize; i++) {
        for (int j = 0; j < 26; j++) {
            if (tr[i].mp[j] != -1) {
                q[i].push(tr[i].mp[j]);
            }
        }
    }
    while (v != -1) {
        if (tr[v].s) {
            s.push_back('P');
            tr[v].s = 0;
        }
        if (q[v].empty()) {
            s.push_back(tr[v].c);
            odw[v] = 1;
            v = tr[v].o;
            continue;
        }
        int x = q[v].front();
        q[v].pop();
        if (!odw[x]) {
            s.push_back('-');
            v = x;
        }
    }
}
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin >> n;
    pair<int, int> a = {0, 0};
    for (int i = 0; i < n; i++) {
        string s;
        cin >> s;
        a = max(a, {s.size(), add(0, s, 0)});
    }
    string s;
    print(a.second, s);
    if (s[s.size()-1] == '_') {
        s.pop_back();
    }
    cout << s.size() << '\n';
    reverse(s.begin(), s.end());
    for (char c : s) {
        cout << c << '\n';
    }
}
| # | 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... |