#include <bits/stdc++.h>
using namespace std;
#define int long long
#define run ios_base::sync_with_stdio(0);cin.tie(0);
#define F first
#define S second
#define endl '\n'
const int inf = 1e18+7;
const int sz = 1e5+5;
void solve() {
int n;
cin >> n;
vector<string>v;
for(int i = 0;i < n;i++){
string s;
cin >> s;
v.push_back(s);
}
sort(v.begin(),v.end());
int cost = 0;
vector<char>op;
int suf = 0;
int psuf = suf;
for(int i = 0; i < n-1;i++){
psuf = suf;
suf = 0;
op.push_back(v[i][suf]);
for(int j = suf+1;j < v[i].size();j++){
op.push_back(v[i][j]);
}
op.push_back('P');
for(int j = 0; j < v[i].size();j++){
if(v[i][j] == v[i+1][j]) suf++;
else break;
}
for(int j = suf+1;j < v[i].size();j++) op.push_back('-');
}
for(int i= suf+1;i < v[n-1].size();i++) op.push_back(v[n-1][i]);
op.push_back('P');
cout << op.size() << endl;
for(auto i : op) cout << i << endl;
}
signed main() {
run;
int t = 1;
//cin >> t;
while (t--) {
solve();
}
}
// 11111100000
# | 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... |