#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
const int N = 525001;
vector<int> adj[N];
string ans = "";
bitset<N> mp;
bitset<N> mp2;
bitset<26> vis2[N];
short lst[N];
void dfs(int node){
if(mp[node]) {
ans += 'P';
}
for(auto ch : adj[node]){
ans += lst[ch]+'a';
dfs(ch);
ans += '-';
}
}
bool cmp(int a,int b){
return mp2[b];
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int t=1;
// cin>>t;
while(t--){
int n;
cin>>n;
string v[n];
for(auto &i:v) cin>>i;
string mx = "";
for(auto i : v){
if(i.size()>mx.size()) mx = i;
}
map<string,int> id;
int cnt = 1;
for(int i=0;i<n;i++){
string tmp = "";
for(int j=0;j<v[i].size();j++){
tmp += v[i][j];
if(!id.count(tmp)){
id[tmp] = cnt++;
lst[id[tmp]] = v[i][j]-'a';
}
}
mp[id[tmp]] = 1;
}
string tmp = "";
for(int i=0;i<n;i++){
tmp = "";
for(auto j : v[i]){
if(!vis2[id[tmp]][j-'a']){
adj[id[tmp]].push_back(id[tmp+j]);
vis2[id[tmp]][j-'a'] = 1;
}
tmp += j;
}
}
tmp = "";
for(int i=0;i<mx.size();i++){
mp2[id[tmp]] = 1;
tmp += mx[i];
}
for(auto &i : adj){
if(i.size())sort(i.begin(),i.end(),cmp);
}
dfs(0);
while(ans.size()&&ans.back()=='-') ans.pop_back();
cout<<ans.size()<<endl;
for(auto i : ans) cout<<i<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKI2RlZmluZSBlbmRsICdcbicKY29uc3QgaW50IE4gPSA1MjUwMDE7CnZlY3RvcjxpbnQ+IGFkaltOXTsKc3RyaW5nIGFucyA9ICIiOwpiaXRzZXQ8Tj4gbXA7CmJpdHNldDxOPiBtcDI7CmJpdHNldDwyNj4gdmlzMltOXTsKc2hvcnQgbHN0W05dOwp2b2lkIGRmcyhpbnQgbm9kZSl7CiAgICBpZihtcFtub2RlXSkgewogICAgICAgIGFucyArPSAnUCc7CiAgICB9CiAgICBmb3IoYXV0byBjaCA6IGFkaltub2RlXSl7CiAgICAgICAgYW5zICs9IGxzdFtjaF0rJ2EnOwogICAgICAgIGRmcyhjaCk7CiAgICAgICAgYW5zICs9ICctJzsKICAgIH0KfQpib29sIGNtcChpbnQgYSxpbnQgYil7CiAgICByZXR1cm4gbXAyW2JdOwp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7ICAgICAgY291dC50aWUoMCk7CiAgICBpbnQgdD0xOwogICAgLy8gY2luPj50OwogICAgd2hpbGUodC0tKXsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4+Pm47CiAgICAgICAgc3RyaW5nIHZbbl07CiAgICAgICAgZm9yKGF1dG8gJmk6dikgY2luPj5pOwogICAgICAgIHN0cmluZyBteCA9ICIiOwogICAgICAgIGZvcihhdXRvIGkgOiB2KXsKICAgICAgICAgICAgaWYoaS5zaXplKCk+bXguc2l6ZSgpKSBteCA9IGk7CiAgICAgICAgfQogICAgICAgIG1hcDxzdHJpbmcsaW50PiBpZDsKICAgICAgICBpbnQgY250ID0gMTsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICAgICAgc3RyaW5nIHRtcCA9ICIiOwogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHZbaV0uc2l6ZSgpO2orKyl7CiAgICAgICAgICAgICAgICB0bXAgKz0gdltpXVtqXTsKICAgICAgICAgICAgICAgIGlmKCFpZC5jb3VudCh0bXApKXsKICAgICAgICAgICAgICAgICAgICBpZFt0bXBdID0gY250Kys7CiAgICAgICAgICAgICAgICAgICAgbHN0W2lkW3RtcF1dID0gdltpXVtqXS0nYSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXBbaWRbdG1wXV0gPSAxOwogICAgICAgIH0KICAgICAgICBzdHJpbmcgdG1wID0gIiI7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIHRtcCA9ICIiOwogICAgICAgICAgICBmb3IoYXV0byBqIDogdltpXSl7CiAgICAgICAgICAgICAgICBpZighdmlzMltpZFt0bXBdXVtqLSdhJ10pewogICAgICAgICAgICAgICAgICAgIGFkaltpZFt0bXBdXS5wdXNoX2JhY2soaWRbdG1wK2pdKTsKICAgICAgICAgICAgICAgICAgICB2aXMyW2lkW3RtcF1dW2otJ2EnXSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0bXAgKz0gajsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0bXAgPSAiIjsKICAgICAgICBmb3IoaW50IGk9MDtpPG14LnNpemUoKTtpKyspewogICAgICAgICAgICBtcDJbaWRbdG1wXV0gPSAxOwogICAgICAgICAgICB0bXAgKz0gbXhbaV07CiAgICAgICAgfQogICAgICAgIGZvcihhdXRvICZpIDogYWRqKXsKICAgICAgICAgICAgaWYoaS5zaXplKCkpc29ydChpLmJlZ2luKCksaS5lbmQoKSxjbXApOwogICAgICAgIH0KICAgICAgICBkZnMoMCk7CiAgICAgICAgd2hpbGUoYW5zLnNpemUoKSYmYW5zLmJhY2soKT09Jy0nKSBhbnMucG9wX2JhY2soKTsKICAgICAgICBjb3V0PDxhbnMuc2l6ZSgpPDxlbmRsOwogICAgICAgIGZvcihhdXRvIGkgOiBhbnMpIGNvdXQ8PGk8PGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=