小H和遗迹
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

    小H在一片遗迹中发现了一种古老而神秘的文字,这种文字也由26种字母组成,小H用小写字母来代替它们。遗迹里总共有N句话,由于年代久远,每句话至少有一处无法辨识,用#表示,缺失的可能是任意长度(也包括0)的任意字符串。
    小H发现这些话非常相似,现在小H想知道,有多少对句子可能是相同的
    注意:(x,x)这样的句子对不计入答案,(x,y),(y,x)视为同一个句子对(详见样例)

输入描述:

第1行,一个整数N
第2~N+1行,每行一个字符串表示一句话
2≤N≤500,000,所有字符串的总长不超过1,000,000

输出描述:

一行,一个整数,表示你给出的答案
示例1

输入

复制
2 
a#a 
#

输出

复制
1

备注:

#表示任意长度的任意字符串