#include <bits/stdc++.h>
using namespace std;
const int mm = 1000;
long long int d[mm], vis[mm];
long long int o;
queue<string> q[mm];
map<string, long long int> name;
map<long long int, string> na;
string st[1000], tt[1000];
int main() {
  long long int n, m, i, j, t, a, b, c, p, k, kk, z, zz;
  string s, u;
  scanf("%lld", &n);
  for (i = 1; i <= n; i++) {
    cin >> s;
    if (name[s] == 0) name[s] = ++o;
    scanf("%lld", &k);
    for (j = 0; j < k; j++) {
      cin >> u;
      q[name[s]].push(u);
    }
  }
  printf("%lld\n", o);
  for (auto x : name) {
    long long int y = 0;
    cout << x.first << ' ';
    while (q[name[x.first]].size()) {
      st[y++] = q[name[x.first]].front();
      q[name[x.first]].pop();
    }
    a = 0;
    for (i = 0; i < y; i++)
      for (j = 0; j < y; j++) {
        if (i == j) continue;
        if (i < j && st[j] == st[i]) continue;
        a = 0;
        long long int l = st[i].size();
        for (z = st[i].size() - 1, zz = st[j].size() - 1; z >= 0 && zz >= 0;
             z--, zz--) {
          if (st[i][z] == st[j][zz])
            a++;
          else
            break;
        }
        if (a == st[i].size()) vis[i] = 1;
      }
    b = 0;
    for (i = 0; i < y; i++) {
      if (vis[i] == 0) tt[b++] = st[i];
    }
    printf("%lld ", b);
    for (i = 0; i < b; i++) cout << tt[i] << ' ';
    printf("\n");
    for (i = 0; i < 100; i++) vis[i] = 0;
  }
}
