import           Control.Monad
import           Data.Maybe
import           Data.List
import qualified Data.ByteString.Char8         as BS

tuplify2 (x : y : _) = (x, y)
tuplify2 _           = undefined

--Input functions with ByteString
readInt = fst . fromJust . BS.readInteger
readIntTuple = tuplify2 . map readInt . BS.words
readIntList = map readInt . BS.words

getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine
getIntNList n = map readIntList <$> replicateM (fromIntegral n) BS.getLine
getIntMatrix = map readIntList . BS.lines <$> BS.getContents
getIntTuple = readIntTuple <$> BS.getLine
getIntNTuples n = map readIntTuple <$> replicateM (fromIntegral n) BS.getLine
getIntTuples = map readIntTuple . BS.lines <$> BS.getContents

main = do
    n       <- read <$> getLine
    strings <- replicateM n getLine
    print $ solve n strings

solve n strings = sum
    [ 1 | i <- [0 .. n-1], j <- [0 .. i], isAnagram strings i j, i /= j ]
    where isAnagram strings i j = sort (strings !! i) == sort (strings !! j)
