#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
using namespace std;
typedef long long l;
string s, ans = "";
stack<char> st;
int main() {
cin >> s;
for (l i = 0; i < s.size(); ++i) {
if (s[i] == '(') {
while (!st.empty() && st.top() == '[') {
ans.push_back(']');
st.pop();
}
st.push('(');
ans.push_back('(');
} else if (s[i] == '[') {
while (!st.empty() && st.top() == '(') {
ans.push_back(')');
st.pop();
}
st.push('[');
ans.push_back('[');
} else if (s[i] == ')') {
if (st.top() == '(') {
st.pop();
ans.push_back(')');
} else {
while (!st.empty() && st.top() == '[') {
ans.push_back(']');
st.pop();
}
ans.push_back('(');
ans.push_back(')');
}
} else if (s[i] == ']') {
if (st.top() == '[') {
st.pop();
ans.push_back(']');
} else {
while (!st.empty() && st.top() == '(') {
ans.push_back(')');
st.pop();
}
ans.push_back('[');
ans.push_back(']');
}
}
}
while (!st.empty()) {
if (st.top() == '(') {
ans.push_back(')');
} else {
ans.push_back(']');
}
st.pop();
}
cout << ans;
return 0;
}