解説

SSii 番目の文字を SiS_i とします。

求める部分列を SiSjSkSl,(i<j<k<l)S_iS_jS_kS_l,(i<j<k<l) とします。

Si=SkS_i = S_k が成り立つ時、 Sj=SlS_j = S_l の組み合わせがどれだけ作れるかを数えます。

i<j<ki < j < k での各文字の出現個数と、 k<lnk < l \leqq n での文字の出現個数をカウントしておきます。

そして、 Si=SkS_i = S_k が成り立つ時に限り、事前に数えておいた Sj=SlS_j = S_l のペアの個数を求めればよいです。

実装