\(S_i\) は良い文字列以外は除いて最初と最後の文字だけ残しておく. その文字列の長さは別に保存しておく. 昇順にソートしておく.

\(i\) 個まで文字列を見たときの最後の文字が \(c\) であるときの最大の長さを \(L(i, c)\) として DP で計算する.