#include<bits/stdc++.h>
using namespace std;
char a[1000050];
int f[1000050],g[1000050],stack1[1000050],stack2[1000050],top1,top2,m,index;
int main()
{
ios::sync_with_stdio(false);
cin>>a;
for(int i=0;i<strlen(a);i++)
{
if(a[i]=='(')
{
stack1[++top1]=i;
if(i==0)
{
f[i]=0;
g[i]=0;
continue;
}
f[i]=f[i-1];
g[i]=0;
}
else if(a[i]=='[')
{
stack2[++top2]=i;
if(i==0)
{
f[i]=0;
g[i]=0;
continue;
}
f[i]=f[i-1];
g[i]=0;
}
else if(a[i]==')')
{
if(i==0)
{
f[i]=0;
g[i]=0;
continue;
}
if(top1>0&&g[i-1]==i-stack1[top1]-1)
{
g[i]=g[i-1]+2+g[stack1[top1]-1];
if(g[i]>f[i-1])
f[i]=g[i];
else
f[i]=f[i-1];
top1--;
}
else
{
g[i]=0;
f[i]=f[i-1];
}
}
else
{
if(i==0)
{
f[i]=0;
g[i]=0;
continue;
}
if(top2>0&&g[i-1]==i-stack2[top2]-1)
{
g[i]=g[i-1]+2+g[stack2[top2]-1];
if(g[i]>f[i-1])
f[i]=g[i];
else
f[i]=f[i-1];
top2--;
}
else
{
g[i]=0;
f[i]=f[i-1];
}
}
if(g[i]>m)
{
m=g[i];
index=i;
}
}
for(int i=index-m+1;i<=index;i++)
cout<<a[i];
return 0;
}