in reply to (Golf) Cryptographer's Tool #2

It's been five hours and no one has posted a solution yet... I wonder if this one isn't as simple as Masem would have us believe... :)

I've been working on this for a while, and I think I've gotten my solution as short as I can. (Then again, I thought the same thing 16 characters ago...) 143 characters:

sub cypher_matches { sub c{my%h;($j=$_)=~s/./substr"a$a",$h{$&}||=keys%h,1/gse;$j}($_,$a,$n +, $m,@d)=@_;map{y///c<$n|y///c>$m?():do{$c=c;$_,[grep{c eq$c}@d]}}/[^ ]+ +/g }