#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <stack>

using namespace std;

#define loop(i,a,b) for(int i=(a); i<int(b); i++)
#define rep(i,b) loop(i,0,b)

int main(){
    string s;
    while(cin>>s && s!="."){
        int n=s.size();
        string t;
        rep(i,n){
            if(s[i]=='+'||s[i]=='-'||s[i]=='?'){
                int d=0;
                int j=i;
                for(; !isalpha(s[j]) && s[j]!='?'; j++){
                    if(s[j]=='+') d++;
                    else d--;
                }
                i=j;
                if(s[j]=='?'){
                    t.push_back('A');
                }else{
                    int x=s[j]-'A'+2600;
                    x+=d;
                    x%=26;
                    t.push_back('A'+x);
                }
            }else{
                t.push_back(s[i]);
            }
        }
        int m=t.size();
        stack<int> st;
        rep(i,m){
            if(t[i]=='[') st.push(i);
            else if(t[i]==']'){
                int l=st.top(); st.pop();
                reverse(t.begin()+l,t.begin()+i+1);
                t[l]=' ';
                t[i]=' ';
            }
        }
        rep(i,t.size()){
            if(isalpha(t[i])) cout<<t[i];
        }
        cout<<endl;
    }
}