#include<bits/stdc++.h>
using namespace std;
string s;
int len,cnt,v,stt,f;
char a[1000001],z[1000001];
stack<char> q,p;
int main(){
cin>>s;
len=s.size();
for(int i=0;i<len;i++){
if(s[i]=='('||s[i]=='['){
stt=i;
f=1;
break;
}
}
if(f==0){
for(int i=0;i<len;i++){
if(s[i]==']')cout<<"[]";
else cout<<"()";
}
return 0;
}
for(int i=stt;i<len;i++){
if(s[i]=='['||s[i]=='(') q.push(s[i]);
else {
if(s[i]==')'&&q.top()=='('){
if(!q.empty()){
q.pop();
cnt+=2;
a[cnt]=')';
a[cnt-1]='(';
}
}else if(s[i]==']'&&q.top()=='['){
if(!q.empty()){
q.pop();cnt+=2;
a[cnt]=']';
a[cnt-1]='[';
}
}
else if(s[i]==']'&&q.top()!='['){
cnt+=2;
a[cnt]=']';
a[cnt-1]='[';
}
else if(s[i]==')'&&q.top()!='('){
cnt+=2;
a[cnt]=')';
a[cnt-1]='(';
}
}
}
while(!q.empty()){
z[++v]=q.top();
q.pop();
}
for(int i=v;i>=1;i--){
if(z[i]=='(')cout<<"()";
else cout<<"[]";
}
for(int i=1;i<=cnt;i++) cout<<a[i];
cout<<'\n';
return 0;
}