变树为环
题号:NC205171
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

    "平衡树,二叉树,字典树,线段树,主席树......"作为一个ACMer,可以说,无时无刻不与树打交道。

    阿杰作为一个老年ACM选手,已经对树产生了抵触情绪,只要有一棵树出现在他的面前,他就想将它破坏。

    众所周知,树,是一个无环图。只要加一条边,使其有了一个环,那么它就不再是树了。所以阿杰的破坏方式很简单,就是加边使其出现环而不再是树的结构。但是,仅仅只让部分节点成环并不是那么美好,因为其他节点组成的子树仍然满足树形结构。因此,他需要加边使得每一个节点都属于一个环。但是如果一个节点属于很多环的话,那么这个图就会变得及其复杂,作为一个数学学院的同学,他希望他创造出的东西尽可能简洁,美观。所以,他希望每一个节点属于且仅属于一个环,且这个环至少含有3个节点。

    那么,要满足这个条件,最少需要在一棵树上加几条边呢?

输入描述:

输入数据第一行,一个正整数n(),表示这棵树的节点数。

接下来n-1行,每行两个数x,y,表示x与y之间有一条边,其中,x,y均为这棵树的节点,从1开始编号。(

输入数据保证为一棵树。

输出描述:

输出数据仅一行,一个数字,表示该问题的答案。

如果输入的树无论如何加边都无法满足这个阿杰的要求,输出-1。

示例1

输入

复制
3
1 2
1 3

输出

复制
1
示例2

输入

复制
2
1 2

输出

复制
-1