#include
#include
using namespace std;
class stack
{
private:
int* elements;
int top;
int maxsize;
public:
stack(int sz=100)
{
maxsize=sz;
top=-1;
elements=new int [maxsize];
if(elements==NULL)
cout<<"error";
}
void overflowprocess()
{
int * newarray=new int [maxsize+20];
if(newarray==NULL)
{
cout<<"error"<<endl;
}
for(int i=0;i<=top;i++)
newarray [i]=elements[i];
delete[]elements;
elements=newarray;
}
bool isempty()
{
return (top==-1)?true:false;
}
bool pop(int &x)
{
if(isempty()==true)
return false;
x=elements[top--];
return true;
}
bool isfull()
{
return (top==maxsize-1)?true:false;
}
void push(int &x)
{
if(isfull()==true)
overflowprocess();
elements[++top]=x;
}
};
void match( char *ex)
{
stack s;
int j=0,i,t=0,a=0,b=0,z;
int length=strlen(ex);
for(int i=1;i
{
if(ex[i-1]=='('||ex[i-1]=='['||ex[i-1]=='
s.push(i);
else if(ex[i]==')'||ex[i]==']'||ex[i]=='>')
{
if(s.pop(j)==true )
{
z=j-1;
if(ex[i]==')')
t+=i-j;
if(ex[i]==']')
a+=i-j;
if(ex[i]=='>')
b+=i-j;
for(int k=i+1;ex[k]!='\0';k++)
{
ex[j-1]=ex[k];
j++;
}
i=z;
}
}
}
cout<
}
int main()
{
int T;
cin>>T;
while(T--)
{
char a[100];
cin>>a;
match(a);
}
return 0;
}