编程题
### 问题描述
小齐想要新建一系列仓库来避免奶牛们过于拥挤,而每个仓库都可以与最多一个已建立的仓库相连。为了确保奶牛们分散得足够开,有时候小齐想要确定从特定的仓库到可通过一系列路径到达的最远仓库的距离(两个仓库之间的距离是沿路径行进的步数)。
你需要处理小齐的一系列操作,包括建立新仓库和查询仓库之间的最远距离。
### 输入格式
第一行包含整数 $Q$,表示操作的总数。
接下来的 $Q$ 行每行描述一个操作,操作有两种形式:$B$ $p$ 或 $Q$ $k$。其中 $B$ $p$ 表示建立一个新的仓库并将其连接到编号为 $p$ 的已建立仓库,若 $p=-1$,则新建仓库不连接其他仓库;$Q$ $k$ 表示查询编号为 $k$ 的仓库到其可通过一系列路径到达的最远仓库的距离。
### 输出格式
对于每个 $Q$ $k$ 查询,输出一行表示编号为 $k$ 的仓库到其可通过一系列路径到达的最远仓库的距离。
### 样例输入
```
7
B -1
Q 1
B 1
B 2
Q 3
B 2
Q 2
```
### 样例输出
```
0
2
1
```
### 评测数据规模
$1 \leq Q \leq 10^5$,$1 \leq p \leq Q$,$1 \leq k \leq Q$。