{-# OPTIONS_GHC -O3 #-}
{-# LANGUAGE ViewPatterns, ScopedTypeVariables #-}

import qualified Data.ByteString as B (getLine, getContents)
import qualified Data.ByteString.Char8 as C (readInt, lines, words, unpack, reverse, dropWhile)
import qualified Data.Maybe as M (fromJust)
import Data.Char as C (isSpace)
import qualified Data.IntSet as S

readInt = fst . M.fromJust . C.readInt
rstrip = C.reverse . C.dropWhile C.isSpace . C.reverse

run s (x:xs) | x `S.member` s = run (S.delete x s) xs | otherwise = run (S.insert x s) xs
run s [] = S.size s

main = do
    (map readInt . C.words -> [n]) <- B.getLine
    (map readInt . C.lines -> xs) <- B.getContents
    putStrLn $ show $ run S.empty xs
