#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

const char *p;

string parse(){
	string s, t;
	while(*p && *p != ']'){
		if(*p == '['){
			++p;
			t = parse();
			++p;
			reverse(t.begin(), t.end());
			s += t;
		}
		else{
			int c = 0;
			for(;; ++p){
				if(*p == '+'){
					++c;
				}
				else if(*p == '-'){
					--c;
				}
				else{
					break;
				}
			}

			if(*p == '?'){
				s += '?';
			}
			else{
				s += char(((*p - 'A') + c % 26 + 26) % 26 + 'A');
			}
			++p;
		}
	}
	return s;
}

int main(){
	string s, t;
	while(cin >> s, s[0] != '.'){
		p = s.c_str();
		t = parse();
		replace(t.begin(), t.end(), '?', 'A');
		cout << t << '\n';
	}
}