こんなプログラムを書いてみよう

ヒューガルデンホワイト

文字列の集合{ BAB, AAB, BAA, AAA, ABA }があるとき、これらのすべてを1回ずつ含み、かつ、3文字の部分文字列としてはこれらの文字列しか含まない文字列は、BABAAABとBAAABABの2通りある。
文字列の集合が{ BAB, AAB, BAA, AAA }のときは、そのような条件では文字列が作れない。


ということで、こういう感じで3文字の文字列がいくつか与えられたとき、それらを全部使いつつ、与えられてない3文字が現れないような文字列を求めるプログラムを作る。
とりあえず{ ABA, BAB, ABC, BCA, CAB, CAA, AAB } がテストデータ。4通り作れるはず。ここからBCAを外すと作れなくなるはず。


追記:できたら、4文字版、5文字版・・・k文字版を
追記2:簡単にできちゃったら、計算時間が線形時間、つまり入力文字列数と答の数に比例した時間で計算できるようにすると、難しめになるんじゃないでしょか