#include <bits/stdc++.h>
using namespace std;

string s;
int now=0;

string solve();
string fplus();
string sub();
string rev();

int main(){
  int i;
  while(1){
    cin >> s;
    if(s==".")break;
    now=0;
    cout << solve() << endl;
  }
  return 0;
}

string solve(){
  string ans;
  while(now<s.size()){
    now++;
    if((s[now-1]>='A'&&s[now-1]<='Z')||s[now-1]=='?')ans+=s[now-1];
    else if(s[now-1]=='+')ans+=fplus();
    else if(s[now-1]=='-')ans+=sub();
    else if(s[now-1]=='[')ans+=rev();
  }
  for(int i=0;i<ans.size();i++)if(ans[i]=='?')ans[i]='A';
  return ans;
}
string fplus(){
  string ans;
  now++;
  if(s[now-1]=='+')ans=fplus();
  else if(s[now-1]=='-')ans=sub();
  else ans = s[now-1];

  if(ans=="Z")ans="A";
  else if(ans=="?")ans="?";
  else ans=ans[0]+1;
  return ans;
}
string sub(){
  string ans;
  now++;
  if(s[now-1]=='+')ans=fplus();
  else if(s[now-1]=='-')ans=sub();
  else ans = s[now-1];

  if(ans=="A")ans="Z";
  else if(ans=="?")ans="?";
  else ans=ans[0]-1;
  return ans;
}
string rev(){
  string ans;
  while(s[now]!=']'){
    now++;
    if((s[now-1]>='A'&&s[now-1]<='Z')||s[now-1]=='?')ans+=s[now-1];
    else if(s[now-1]=='+')ans+=fplus();
    else if(s[now-1]=='-')ans+=sub();
    else if(s[now-1]=='[')ans+=rev();
  }
  now++;
  reverse(ans.begin(),ans.end());
  return ans;
}

