sub a{$#_?(sort{length$a<=>length$b}map{my$s=$_;my@l=grep{$s ne $_}@_;map{my$t=$_;my@m=grep{$t ne $_}@l;a(i($s,$t),@m)}@l}@_)[0]:pop} sub i{($_,$t)=@_;chop$t while!s/\Q$t\E$/$_[1]/&&''ne$t;$_;} print a qw(logger gerbil log analog); print "\n"; print a qw(GATTACA ATTACA GATT AAGAT CCC); #### sub i{my($s,$t)=@_;chop$t while$s!~s/\Q$t\E$/$_[1]/;$s} #### sub i{($_,$t)=@_;chop$t while!s/\Q$t\E$/$_[1]/;$_} #### sub assemble{$#_?(sort{length$a<=>length$b}map{my$s=$_;my@l=grep$s ne$_,@_;map{my($t,$u)=($s,$_);my@m=grep$u ne$_,@l;chop$u while$t!~s/\Q$u\E$/$_/;assemble($t,@m)}@l}@_)[0]:pop}