#include <bits/stdc++.h>
char temp[100009];
int A[100009], B[100009], n, maxi, init, i, N, x, y;
int main() {
  while (scanf("%s", temp) == 1) {
    n = strlen(temp);
    maxi = 0;
    init = 0;
    N = 0;
    B[0] = 0;
    for (i = 0; i < n; i++) {
      if (i != 0) B[i] = B[i - 1];
      if (temp[i] == '(' || temp[i] == '[') {
        if (temp[i] == '[') B[i]++;
        A[N] = i;
        N++;
      } else if (temp[i] == ')') {
        if (N > 0 && temp[A[N - 1]] == '(')
          N--;
        else {
          N = 0;
          init = i + 1;
        }
        if (init < i) {
          if (N > 0) {
            if (B[i] - B[A[N - 1]] > maxi) {
              maxi = B[i] - B[A[N - 1]];
              x = A[N - 1] + 1;
              y = i;
            }
          } else if ((init == 0 && B[i] > maxi) || B[i] - B[init - 1] > maxi) {
            if (init == 0)
              maxi = B[i];
            else
              maxi = B[i] - B[init - 1];
            x = init;
            y = i;
          }
        }
      } else if (temp[i] == ']') {
        if (N > 0 && temp[A[N - 1]] == '[')
          N--;
        else {
          N = 0;
          init = i + 1;
        }
        if (init < i) {
          if (N > 0) {
            if (B[i] - B[A[N - 1]] > maxi) {
              maxi = B[i] - B[A[N - 1]];
              x = A[N - 1] + 1;
              y = i;
            }
          } else if ((init == 0 && B[i] > maxi) || B[i] - B[init - 1] > maxi) {
            if (init == 0)
              maxi = B[i];
            else
              maxi = B[i] - B[init - 1];
            x = init;
            y = i;
          }
        }
      }
    }
    printf("%d\n", maxi);
    if (maxi > 0) {
      for (i = x; i <= y; i++) printf("%c", temp[i]);
      printf("\n");
    }
  }
  return 0;
}
