#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
string s, ans;
long long d[100005], high;
stack<pair<char, long long>> st;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  memset(d, -1, sizeof d);
  cin >> s;
  for (int i = 0; i < s.size(); i++)
    if (!st.empty() && ((st.top().first == '(' && s[i] == ')') ||
                        (st.top().first == '[' && s[i] == ']')))
      d[st.top().second] = i, st.pop();
    else
      st.push({s[i], i});
  for (int i = 0; i < s.size(); i++)
    if (~d[i]) {
      long long tmp = d[i];
      while (tmp < s.size() && ~d[tmp + 1]) d[i] = d[tmp + 1], tmp = d[tmp + 1];
      i = tmp;
    }
  for (int i = 0; i < s.size(); i++)
    if (~d[i]) {
      long long cnt = 0;
      string tmp = s.substr(i, d[i] - i + 1);
      for (auto i : tmp) cnt += (i == '[');
      if (cnt > high) high = cnt, ans = tmp;
      i = d[i];
    }
  cout << high << endl << ans;
  return 0;
}
