SRM391 Div2 500

問題

2つの文字列が同型であるというのは、1つ目の文字列の文字を2つ目の文字列の文字へリマッピングすることができることをいう。リマッピングとは、ある文字列のすべての文字を別な文字へ置き換えることで、文字の並びは変わらない。そして、2つの文字が同じ文字へマッピングされることはない。たとえば、"abcd"と"zbxz"はa->z,b->b,c->xとマッピングできるので、同型である。
いくつかの文字列が与えられるので、同型である文字列の組の個数を返す。

考え方

すべての文字列の組み合わせについて、それが同型かどうかを判定する。
同型かどうかは、実際に文字s1[i]が使われていなければs2[i]に割り当てる。もう割り当たっている文字ならば、違う場合同型ではない。また、すでに使われている文字に重複して割り当てようとしているときも同型ではない。そうでなければ同型である。