##
# 60 chars
sub f {
#23456789_123456789_123456789_
my($p,$d)=@_;my@c=$p=~/[^_]/g;
$p=~s/_/[^@c]/g;grep/^$p$/,@$d
}
####
# 123 chars
sub g {
#23456789_123456789_123456789_123456789_12
my($p,$d,@l)=@_;$p=~s/_/[^@l]/g;$_=join''
,sort+map{split//}grep/$p/i&&s/[@l]//g,@$d
;$p=y;;;c;/(.)\1{$p}/&&return$1while--$p
}