圣诞节装饰树的时间快到了。NWERC 的评委们正在讨论在树上放置装饰品的最佳方式。他们一致认为,将装饰品均匀地分布在树枝上至关重要。
本题仅限于二叉圣诞树。这类树由一个树干组成,树干分裂成两个子树。每个子树本身可能进一步分裂成两个更小的子树,依此类推。不再分裂的子树称为细枝(twig)。细枝可以通过在其上附加最多一个球来进行装饰。
图 1 – 包含子树、细枝和一个球的树的示例。
一棵装饰好的树,当且仅当满足以下要求时,球的分布是均匀的: 在(子)树分裂成两个更小子树 $t_1$ 和 $t_2$ 的每一个点上,左子树中的球总数 $N(t_1)$ 和右子树中的球总数 $N(t_2)$ 必须相等或相差一。即:$|N(t_1) - N(t_2)| \le 1$。
评委们最初热情地将球挂在树上任意的细枝上。当他们找不到更多的球可以挂在树上时,他们退后一步审视结果。在大多数情况下,球的分布并不完全均匀。他们决定通过将一些球移动到不同的细枝上来解决这个问题。
任务
给定树的结构和球的初始位置,计算为了达到上述定义的均匀分布,最少需要移动多少个球。
注意,不允许向树中添加新球,也不允许永久移除树上的球。改变树的唯一方法是将球移动到不同的细枝上。
输入格式
对于每个测试用例,输入由一行描述装饰树的字符串组成。
树的描述由其子树的递归描述组成。(子)树由以下形式之一的字符串表示:
字符串 () 表示没有球的细枝。
字符串 (B) 表示挂有一个球的细枝。
* 字符串 (t1t2) 表示分裂成两个更小子树 $t_1$ 和 $t_2$ 的(子)树,其中 $t_1$ 和 $t_2$ 是此处列出的形式之一的字符串。
一棵树包含至少 2 个且最多 1000 个细枝。
输出格式
对于每个测试用例,打印一行输出。
如果可以将球均匀地分布在树上,则打印为满足均匀分布要求而必须移动的球的最少数量。
如果无法将球均匀分布,则打印单词 impossible。
样例
输入 1
((B)())
输出 1
0
输入 2
((((B)(B))((B)()))(B))
输出 2
impossible
输入 3
(()(((B)(B))(B)))
输出 3
1
图 2 – 对应于样例输入用例的树。