in reply to Divide a list of string into substrings
Intuitively I'd try to start to take all pairs from the input and construct their decomposition.
Then you repeat this step with the resulted set of distincts substrings as new input again.
Keep repeating again till there are no new decompositions.
Though you need to mathematically proof that intermediate steps stay optimal and that the desired solution is reached.
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery