/*
    不错的一道题
    题意:给出一棵二叉树,有权值,求改变最小的点使平衡

    其实,有些点不用改变,所以如果第k层的点a不用改变,则平衡时其根的值为a*2^k
    所以算出所有点,如果它不用改变时对应根的值,存在数组里
    然后求这个数组里相同个数最多的Max,答案就是tot-Max了

    还有,遇到[表示层次++,遇到]表示层次--
*/

#include
<cstdio>
#include
<cstring>
#include
<algorithm>
using namespace std;

const int MAXN=1000010;

char str[MAXN];
long long ans[MAXN];

int main(){
    
int T;
    scanf(
"%d",&T);
    
while(T--){
        scanf(
"%s",str);
        
int level=0,tot=0;
        
for(int i=0;str[i];i++){
            
if(str[i]=='[')level++;
            
else if(str[i]==']')level--;
            
else if(str[i]<='9'&&str[i]>='0'){
                
long long tmp=0;
                
for(;str[i]&&str[i]<='9'&&str[i]>='0';i++)
                    tmp
=tmp*10+str[i]-'0';
                i
--;
                tmp
=tmp<<level;
                ans[tot
++]=tmp;
            }

        }

        sort(ans,ans
+tot);
        
int Max=1,cnt=0;
        
for(int i=0;i<tot;i++){
            
if(i==0||ans[i]!=ans[i-1])cnt=1;
            
else {
                cnt
++;
                
if(Max<cnt)Max=cnt;
            }

        }

        printf(
"%d\n",tot-Max);
    }

    
return 0;
}