#include <bits/stdc++.h>
using namespace std;
const long long inf = 9e18;
const double pi = acos(-1.0);
const long long M = 1e9 + 7;
const long long N = 1e5 + 5;
long long power(long long b, long long n) {
  long long ans(1);
  while (n) {
    if (n & 1) ans = (ans * b) % M;
    b = (b * b) % M;
    n >>= 1;
  }
  return ans;
}
long long prime(long long n) {
  if (n <= 1) return 0;
  if (n <= 3) return 1;
  if (n % 2 == 0 || n % 3 == 0) return 0;
  for (long long i = 5; i * i <= n; i += 6)
    if (n % (i) == 0 || n % (i + 2) == 0) return 0;
  return 1;
}
long long ar[1000003];
vector<string> v[1000006];
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  string s;
  cin >> s;
  long long k = 0;
  long long l = 0, c = 0;
  while (l <= s.size()) {
    if (c == 0) {
      string t = "";
      c = 1;
      long long i;
      for (i = l; s[i]; i++) {
        if (s[i] != ',') {
          t += s[i];
        } else {
          break;
        }
      }
      l = i + 1;
      while (ar[k] == 0 && k > 0) k--;
      v[k].push_back(t);
    } else {
      c = 0;
      long long cnt = 0, i;
      for (i = l; s[i]; i++) {
        if (s[i] != ',') {
          cnt = cnt * 10 + (s[i] - 48);
        } else {
          break;
        }
      }
      l = i + 1;
      if (cnt == 0) {
        if (ar[k] > 0) {
          ar[k]--;
          if (ar[k] == 0 && k > 0) k--;
        }
      } else {
        if (ar[k]) ar[k]--;
        ar[++k] = cnt;
      }
    }
  }
  k = 0;
  for (long long i = 0; i < 1000006; i++) {
    if (v[i].size()) k++;
  }
  cout << k << endl;
  for (long long i = 0; i < k; i++) {
    for (long long j = 0; j < v[i].size(); j++) {
      cout << v[i][j] << " ";
    }
    cout << endl;
  }
}
