#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define int ll
typedef long long ll;
#define Ishouldbeunrated ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
struct Trie {
    struct Node {
        int ch[26] = {0};
        int f = 0;
    };
    vector<Node> trie;
    Trie() { trie.emplace_back(); }
    void insert(const string &s) {
        int node = 0;
        for (char c : s) {
            int i = c - 'a';
            if (!trie[node].ch[i]) {
                trie[node].ch[i] = trie.size();
                trie.emplace_back();
            }
            node = trie[node].ch[i];
            ++trie[node].f;
        }
    }
    vector<char> op;
    void print(int node) {
        vector<pair<int, int>> to;
        for (int i = 0; i < 26; ++i)
            if (trie[node].ch[i])
                to.emplace_back(trie[trie[node].ch[i]].f, i);
        if (to.empty()) op.push_back('P');
        sort(all(to));
        for (auto i : to) {
            op.push_back(i.second + 'a');
            print(trie[node].ch[i.second]);
            op.push_back('-');
        }
    }
};
void die() {
    int n;
    cin >> n;
    vector<string> words(n);
    for (auto &w : words) cin >> w;
    
    Trie tr;
    for (const auto &w : words) tr.insert(w);
    
    tr.print(0);
    while (!tr.op.empty() && tr.op.back() == '-') tr.op.pop_back();
    
    cout << tr.op.size() << "\n";
    for (char c : tr.op) cout << c << "\n";
}
signed main() {
    Ishouldbeunrated
    die();
}
| # | 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... |