Adam 携带了一串挂在钥匙环上的钥匙,其中一些钥匙环可能相互连接。钥匙环是普通的钥匙环,因此可以通过沿着螺旋滑动将钥匙挂上或取下。同样地,两个钥匙环也可以连接或断开。Adam 想要把其中的一些钥匙给 Brenda。由于操作钥匙和钥匙环通常是一项繁琐的任务(而且对指甲有害),Adam 正在寻找一种方法来最小化钥匙和钥匙环的操作次数。
每一次钥匙的挂上、取下,或钥匙环的连接、断开都被视为一次操作。由于操作两个钥匙环比滑动钥匙要容易得多,我们首先希望最小化钥匙的取下和挂上次数。在钥匙操作次数相同的情况下,你需要找到钥匙环连接和断开次数最少的那种方案。
当所有操作完成后,Adam 和 Brenda 必须各自携带一个由钥匙环和钥匙组成的连通组。唯一的例外是当他们中任何一人没有任何钥匙时——在这种情况下,不需要钥匙环。每把钥匙必须恰好挂在一个钥匙环上。一些钥匙环(但不是钥匙)可以被视为剩余部分,并保持与这两个组断开连接。
下图左侧显示了由四个钥匙和三个钥匙环组成的初始配置。Adam 希望给 Brenda 标记为 N 和 R 的两把钥匙。这可以通过两次钥匙操作和一次钥匙环操作来完成,结果如图右侧所示。
输入格式
每个测试用例包含一行或多行,每行包含一个双字母字符串。小写字母 (a - z) 代表钥匙环,大写字母 (A - Z) 代表钥匙。行中的两个字母指定了一个挂在钥匙环上的钥匙,或者两个连接在一起的钥匙环。每个测试用例的结束由包含数字 0 的行表示。
字母 A 到 M 代表的钥匙由 Adam 保留,字母 N 到 Z 代表的钥匙给 Brenda。
没有一行包含两个大写字母。在同一个测试用例中,没有一对字母被指定超过一次。每把钥匙恰好连接到一个钥匙环上。钥匙环配置中没有“环”(断开任意两个钥匙环都会增加连通组的数量)。所有现有的钥匙和钥匙环至少被提及一次。
输出格式
对于每个测试用例,显示用例编号,后跟最小的钥匙挂上/取下操作次数和最小的钥匙环连接/断开操作次数。
如果无法按要求分配钥匙,则显示用例编号和单词 impossible,而不是两个整数。
样例
输入 1
ab bc aA aN Rb cB 0 aA bB Cc 0 aA aZ 0 aA bB cC xX yY ax xb by yc 0
输出 1
Case 1: 2 1 Case 2: 0 2 Case 3: impossible Case 4: 0 7