#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
#include <list>
using namespace std;
const int N = 100010;
char line[N];
int main()
{
while (gets(line)) {
string s = line;
list<char> l;
list<char>::iterator it = l.begin();
for (size_t i = 0; i < s.length(); i++) {
if (s[i] == '[') {
it = l.begin();
} else if (s[i] == ']') {
it = l.end();
} else {
l.insert(it, s[i]);
}
}
for (it = l.begin(); it != l.end(); it++) {
printf("%c",*it);
}
printf("\n");
}
return 0;
}
#include<iostream>
#include<cstdio>
#include<string>
#include<deque>
using namespace std;
string s;
void solve()
{
int l=0,r=0,len=s.size();
deque<string> d1,d2;
while((s[l]=='['||s[l]==']')&&l<len)l++;
r=l;
while((s[r]!='['&&s[r]!=']')&&r<len)r++;
d1.push_front(string(s.begin()+l,s.begin()+r));
l=r;
int i=l;
while(i<len)
{
if(s[i]!='['&&s[i]!=']'){i++;continue;}
if(s[i]=='[')
{
i++;
if(i==len-1)break;
l=i;
while((s[i]!='['&&s[i]!=']')&&i<len)i++;
string a(s.begin()+l,s.begin()+i);
d1.push_front(a);
}
else if(s[i]==']')
{
i++;
if(i==len-1)break;
l=i;
while((s[i]!='['&&s[i]!=']')&&i<len)i++;
d2.push_back(string(s.begin()+l,s.begin()+i));
}
}
while(!d1.empty()){cout<<d1.front();d1.pop_front();}
while(!d2.empty()){cout<<d2.front();d2.pop_front();}
cout<<endl;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
while(cin>>s)
{
solve();
}
return 0;
}