##
sub search {
my ($target, $parts, $used) = @_;
####
unless (length $target) {
print join ("-", @$used), "\n";
return;
}
####
for my $part (@$parts) {
####
next unless 0 == index $target, $part;
####
my $remainder = substr $target, length $part;
####
search ($remainder, [grep {$part ne $_} @$parts], [@$used, $part]);
}
}