#include <bits/stdc++.h>
using namespace std;
stack<pair<char, int> > S;
string g;
int t[100100];
int main() {
  cin >> g;
  t[0] = (g[0] == '[');
  for (int i = 1; i < g.size(); i++) t[i] = t[i - 1] + (g[i] == '[');
  int from = -1, to = -1, mmax = 0, ffrom = 0, tto;
  for (int i = 0; i < g.size(); i++) {
    if (g[i] == '[' || g[i] == '(') {
      S.push(make_pair(g[i], i));
    } else {
      if (S.empty()) {
        ffrom = i + 1;
        continue;
      }
      if ((g[i] == ']' && S.top().first == '[') ||
          ((g[i] == ')' && S.top().first == '('))) {
        S.pop();
        int tefrom;
        if (S.size() == 0)
          tefrom = ffrom;
        else
          tefrom = S.top().second + 1;
        int now = t[i] - (tefrom == 0 ? 0 : t[tefrom - 1]);
        if (now >= mmax) {
          mmax = now;
          from = tefrom;
          to = i;
        }
      } else {
        while (!S.empty()) S.pop();
        ffrom = i + 1;
      }
    }
  }
  printf("%d\n", mmax);
  if (from != -1)
    for (int i = from; i <= to; i++) printf("%c", g[i]);
  puts("");
  return 0;
}
