using System; using System.Collections.Generic; using static System.Console; using System.Linq; class yuki302 { static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NMap(int n) => Enumerable.Repeat(0, n).Select(_ => NList).ToArray(); static void Main() { var n = int.Parse(ReadLine()); var map = NMap(n - 1); var tree = new List[n]; for (var i = 0; i < tree.Length; ++i) tree[i] = new List(); foreach (var edge in map) { tree[edge[0] - 1].Add(edge[1] - 1); tree[edge[1] - 1].Add(edge[0] - 1); } var list = Enumerable.Repeat(int.MaxValue, n).ToArray(); DFS(-1, 0, tree, list); WriteLine(list.Count(c => c % 2 == 1)); } static int DFS(int prev, int pos, List[] tree, int[] list) { var val = int.MaxValue; if (tree[pos].Count == 1 && tree[pos][0] == prev) { val = 1; } else foreach (var next in tree[pos]) { if (next == prev) continue; val = Math.Min(val, DFS(pos, next, tree, list)); } val = (val + 1) % 2; list[pos] = val; return val; } }