众所周知,电视肥皂剧中的众多角色往往会导致极其复杂的爱情纠葛。在某部电视剧中,共有 $N$ 个角色。每个角色恰好爱着一个人(也可能是他/她自己)。当且仅当两个角色互爱时,我们称他们处于恋爱关系中。
有一种特殊的复杂情况被称为“爱情多边形”。如果第一个角色爱第二个,第二个爱第三个,以此类推,且最后一个角色爱第一个,那么我们称 3 个或更多的角色处于“爱情多边形”中。
最近的民意调查显示,观众已经厌倦了这种剧情,更倾向于浪漫的结局。因此,剧组决定向一些角色射出爱情之箭,使得每个人都处于恋爱关系中。通过向某人射出爱情之箭,你可以改变该角色所爱的人(改为你选择的任何角色)。
请问为了让每个人都处于恋爱关系中,最少需要射出多少支爱情之箭?
输入格式
第一行包含一个整数 $N$,表示涉及的角色数量。接下来的 $N$ 行,每行包含两个以空格分隔的名字 $s$ 和 $t$,表示名为 $s$ 的角色最初爱着名为 $t$ 的角色。角色名字长度不超过 10 个字母,且由小写英文字母组成。
输出格式
输出一个整数,表示为了让每个人都处于恋爱关系中所需的最少爱情之箭数量。如果无法做到,则输出 -1。
数据范围
你的解法将在多组测试数据上进行测试,每组测试数据都有相应的分数。每组测试数据包含多组测试用例。要获得某一组的分数,你需要解决该组中的所有测试用例。你的最终得分为单次提交的最高分。
| 组别 | 分数 | 数据范围 | 附加限制 |
|---|---|---|---|
| 1 | 21 | $2 \le N \le 20$ | |
| 2 | 25 | $2 \le N \le 100\,000$ | 每个角色都被某人爱着(可能是他们自己)。 |
| 3 | 29 | $2 \le N \le 100\,000$ | 不存在恋爱关系或“爱情多边形”。 |
| 4 | 25 | $2 \le N \le 100\,000$ |
说明
第一个样例在图中进行了说明。上图展示了最初的恋爱情况,其中从 $s$ 指向 $t$ 的箭头表示 $s$ 最初爱着 $t$,粉色高亮显示了在唯一最优解中需要被射中爱情之箭的三个角色。下图展示了之后的情况。
在第二个样例中(满足第 3 组的限制),存在多个最优解。其中之一是向 a、b 和 d 射出爱情之箭,并分别让他们爱上 b、a 和 c。
在第三个样例中,我们有一个爱情三角,无论我们射出多少支爱情之箭,总会有人被剩下。
样例
样例输入 1
8 leonard emmy ada emmy isaac leonard emmy pierre pierre bernhard bernhard emmy sofia karl karl sofia
样例输出 1
3
样例输入 2
4 a c b c c d d d
样例输出 2
3
样例输入 3
3 rocky scarlet scarlet patrick patrick rocky
样例输出 3
-1