- Prepare
- Algorithms
- Dynamic Programming
- Zurikela's Graph

# Zurikela's Graph

# Zurikela's Graph

Zurikela is creating a graph with a special graph maker. At the begining, it is empty and has no nodes or edges. He can perform types of operations:

- : Create a set of new nodes and name it -.
- : Create edges between nodes of - and -.
- : Create a set composed of nodes from - and its directly and indirectly connected nodes, called -. Note that each node can only exist in one set, so other sets become empty.

The first 's name will be -. In first and third operation is referring to the index of new set:

```
K = [index of last created set] + 1
```

Create the graph by completing the operations specified during input. Then calculate the maximum number of independent nodes (i.e.:how many nodes in the final graph which don't have direct edge between them).

**Input Format**

The first line contains .

The subsequent lines each contain an operation to be performed.

**Constraints**

.

For the first operation, .

For the second operation, and all s are *distinct*.

For the second and third operation, it's guaranteed that - and - exist.

**Output Format**

Print maximum number of *independent nodes* in the final graph (i.e.: nodes which have no direct connection to one another).

**Sample Input**

```
8
A 1
A 2
B 1 2
C 1
A 2
A 3
B 3 4
B 4 5
```

**Sample Output**

```
5
```

**Explanation**

There are operations.

After first operation:

After second operation:

After third operation:

After fourth operation:

After fifth and sixth operation and :

After seventh operation:

After eigth operation:

There are independent nodes in - and independent nodes in -, so we print their sum () as our answer.