#!/usr/bin/perl

open FH, "<$ARGV[0]";
@words = <FH>;
chomp @words;
close FH;

@letters = (
 'b', 'c', 'd', 'g', 'l',
 'm', 'q', 'y', 
 'f', 's', 'v', 'x', 
 'w', 'h', 'u',
 'a', 
);

@selection = ();
$leng = 0;
$best = 10000;

sub recurse {
  my ($letnum) = @_;
  return if ($leng > $best);
  if ($letnum >= 16) {
    $best = $leng;
    print join(" ", $best, @selection), "\n";
  } elsif (0 < grep(/$letters[$letnum]/, @selection)) {
    recurse($letnum+1);
  } else {
    foreach (@words) {
      if (/$letters[$letnum]/) {
        push @selection, $_;
        $leng += length $_;
        recurse($letnum+1);
        $leng -= length $_;
        pop @selection;
      }
    }
  }
}

recurse(0);

