import java.util.*;

public class One {
      static class TreeNode {
          int val;
          TreeNode left;
          TreeNode right;
          public TreeNode(int x) { val = x; }
          public void  TreeNodeNext(TreeNode a){
              if(left==null)left=a;
              else right=a;
          }
      }
     static int getNodeNum(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return getNodeNum(root.left) + getNodeNum(root.right) + 1;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n= scanner.nextInt();
        HashMap<Integer,TreeNode>hashMap=new HashMap<>();
        for (int i = 0; i <n-1 ; i++) {
            int a= scanner.nextInt();
            int b= scanner.nextInt();
            if(!hashMap.containsKey(a))hashMap.put(a,new TreeNode(a));
            if(!hashMap.containsKey(b))hashMap.put(b,new TreeNode(b));
            hashMap.get(b).TreeNodeNext(hashMap.get(a));//我这默认的是例如3-2 2是父节点 3是子节点 题目给的测试用例是这样,可能其他的例子不是
        }

        TreeNode root=hashMap.get(1);
        int sumleft=0,sumright=0;
       if (root.left!=null) sumleft=getNodeNum(root.left);
       if (root.right!=null) sumright=getNodeNum(root.right);
       System.out.println(Math.max(sumleft,sumright));
    }
}