解説
操作ごとの r の値を順に並べた列を A とする。
A を前半と後半に分け、それぞれの長さを ⌊2N⌋,⌈2N⌉ とする。
前半の各項を S,T に追加する組み合わせ 2⌊2N⌋ 通りを全列挙する。前半の操作後の文字列をそれぞれ S1,T1 とする。すべての操作後に S=T となるためには、 S,T のうち短い方が長い方の接頭辞である必要がある。
∣T1∣<∣S1∣ の場合を考える。このとき、文字列 U を用いて S1=T1+U と表せる。
後半の操作で S,T に追加される文字列をそれぞれ S2,T2 とすると、
S1+S2=T1+T2⟺U+S2=T2
が成り立つ。
したがって、後半の操作では、 U,S2 がそれぞれ T2 の接頭辞、接尾辞であるようなものを探せば良い。
∣S1∣≤∣T1∣ のときも同じようにして考えることができる。
前半、後半で 2⌊2N⌋,2⌈2N⌉ 通り をそれぞれ半分全列挙し、map などを用いて出現回数を記録して S=T となるような組を足し合わせることで答えが得られる。
N=⌊log3X⌋+1 なので、計算量 O(N22⌊2N⌋)=O(Xlog32(logX)2) などでこの問題を解くことができる。なお、 N≤38 である。