acm International Collegiate Programming Contest

Links

A B C D E F G H

Problem H

芸術家の苦悩

芸術家であるあなたは,作品の材料として多くのボールとそれらを結ぶための紐を用意した.ボールには順に番号を振っていくが,最初はボールのひとつを 1 番とするだけである.他のボールはまだ番号を振っていないし,どのボールも紐で結んでいない.

作品制作には以下の操作のどちらかを行うことを繰り返す.

複製:
制作途中の作品のレプリカを作る.これまでに番号付けしたボールが n 個あるとき,まだ番号のついていないボール n 個に n+1, ..., 2n という番号を振る.これで 2n 個のボールに 1 から 2n の重複しない番号を振ったことになる.次に,複製前に直接結ばれていたふたつのボールの組すべてについて,それが u 番と v 番なら,新たに n+u 番と n+v 番のふたつのボールを紐で結ぶ.
新たな結合:
番号がついているふたつの異なるボールを選び,紐で結ぶ.ただし,ふたつのボールが既に直接結ばれていたら何もしない.

最初はひとつのボールにしか番号がついていないので,まずは複製から始めることになる.

図 H-1 に Sample Input の 2 番目のデータセットの作品の制作過程を示す.

Visualization of the second dataset in Sample Input.
図 H-1: 作品の制作例

すべての真の芸術家と同様完璧主義者であるあなたは,不完全な作品には我慢できない.不満足な作品は,つないだ紐を全部引きちぎって一刻も早く完全に破壊してしまいたい.そこで,あなたは番号のついたボールのうちのいくつかを片手に,残り全てをもう一方の手に持って,ふたつの端点が左右の手にまたがるような紐を全部いっぺんに引きちぎることにした.この行為を 1 回だけ行うことでボールとボールを結ぶ紐を全て切断できれば,作品の破壊は成功である.逆に,同じ手に持ったボール同士を結ぶ紐があるようならば,それが切断されずに残ってしまうので,作品の破壊は失敗である.

図 H-2 は Sample Input の 2 番目のデータセットで作られる作品の破壊を試みる様子を示している.この作品を破壊するには,どちらの手にも 3 個以上のボールを持つ必要がある.

The artist in agony, trying to destroy the artwork of the second dataset in Sample Input.
図 H-2: 上述の作品の破壊

与えられた操作の列によって作られる作品について,上記のやり方でこれを破壊できるか判定せよ.できる場合は,少なくともいくつのボールを左手に持つ必要があるか求めよ.右手にはいくつのボールを持ってもよい.

Input

入力は複数のデータセットからなる. 各データセットは次の形式で表される.

m
a1
 ⋮
am

m はあなたが行った操作の数を表す.m は正の整数であり,300 を超えない.

i 番目の操作 ai (i = 1, ..., m) は以下のいずれかの形式で与えられる.

COPY
これは問題文中の 複製 操作を表す.単一のデータセットに含まれる COPY 操作の総数は 60 を超えないことが保証される.
LINK u v
これは問題文中の 新たな結合 操作を表す.この操作では,番号 u, v の 2 個のボールを確認し,これらがまだ直接結ばれていなければ紐で結んだ.uvu < v を満たす正の整数で,この操作の時点で番号 u, v のボールがそれぞれ存在することが保証される.

入力の終わりは,ゼロだけからなる行で表される.入力に含まれるデータセットは 100 個以下である.

Output

各データセットについて,ひとつの整数からなる行を出力する.上述の方法で作品を破壊することができるならば,そのとき左手に持つ必要があるボールの最小の個数を出力せよ.作品の破壊が不可能ならば −1 を出力せよ.

Sample Input

3
COPY
LINK 1 2
COPY
8
COPY
COPY
LINK 1 2
LINK 1 3
LINK 1 3
COPY
LINK 5 6
LINK 3 6
5
COPY
LINK 1 2
COPY
LINK 1 3
LINK 2 3
2
COPY
COPY
0

Output for the Sample Input

2
3
-1
0
(End of Problem H) A B C D E F G H