#include <iostream>
#include <string>
using namespace std;
class stack {
public:
stack(): top(-1), size(10){
arr = new char[size];
}
void push (char x);
void pop();
char Top();
int isEmpty();
private:
int top;
int left;
int size;
char *arr;
};
void stack::push(char x) {
if(top == size-1) {
char *newArr = new char[size*2];
for(int i = 0; i < size; i++) {
newArr[i] = arr[i];
}
delete[] arr;
arr = newArr;
size *= 2;
}
arr[++top] = x;
}
void stack::pop() {
if(top == -1)
return;
else
top--;
}
char stack::Top() {
if(top == -1)
return '!';
else
return arr[top];
}
int stack::isEmpty() {
if(top == -1)
return 1;
else
return 0;
}
int main() {
int n;
cin >> n;
char ans[100005];
for(int j = 0; j < n; j++) {
string s;
stack myStack; // store the left parenthesis index
int len = 0;
int longest_len = 0;
cin >> s;
int sLen = s.length();
for(int i = 0; i < sLen; i++) {
if(s[i] == ')') {
if(!myStack.isEmpty()) {
if(s[myStack.Top()] == '(') {
s[myStack.Top()] = '.';
s[i] = '.';
myStack.pop();
}
else { // ')'
while(!myStack.isEmpty())
myStack.pop();
}
}
}
else { // c == '('
myStack.push(i);
}
}
for(int i = 0; i < sLen; i++) {
if(s[i] == '.') {
len++;
}
else {
longest_len = max(longest_len, len);
len = 0;
}
}
longest_len = max(longest_len, len);
ans[j] = char(((longest_len / 2) % 26) + 'a');
}
for(int i = 0; i < n; i++){
std::cout << ans[i];
}
std::cout << "\n";
}