#include <stdio.h>
#include <stdlib.h>

int COMPARE(const void *a, const void *b){ return *(int*)a - *(int*)b; }  /* 昇順 */

/* データ d を読み込みながら、 h から始まる選挙区で勝つために必要な最少の得票数を返す */
int search(char *d, int *h){
	int v[100];
	int n = 0;
	int i, m;

	if (d[*h] == '['){
		/* 選挙区を読み込む */
		while (d[*h] == '['){
			(*h)++;  /* '[' */
			v[n] = search(d, h);
			n++;
			(*h)++;  /* ']' */
		}

		/* この層にある選挙区の過半数 (n / 2 + 1 個) で勝つための、必要な最少の得票数を計算する */
		qsort(v, n, sizeof(int), COMPARE);  /* 昇順にソートする */
		m = 0;
		for (i = 0; i < n / 2 + 1; i++){
			m += v[i];  /* 一つの選挙区で勝つための得票数 */
		}
		return m;
	}else{
		/* 有権者数を読み込む */
		v[0] = 0;
		n = 1;
		/* 一桁ずつ読み込む */
		for (; d[*h] >= '0' && d[*h] <= '9'; (*h)++){
			v[0] *= 10;
			v[0] += d[*h] - '0';
		}

		return v[0] / 2 + 1;  /* 過半数となる票数を返す */
	}
}

int main(void){
	int n;
	char d[10000];
	int i, h;

	scanf("%d", &n);

	for (i = 0; i < n; i++){
		scanf("%s", d);

		h = 0;
		printf("%d\n", search(d, &h));
	}

    return 0;
}