also, what does the input data look like? A possible place to look for speedups is to see if there's anyway you can structure your data in memory that will make it faster to determine if there is a match. (trees come to mind)
i.e. (I have no idea if this has anything to do with genetic data but the example below does :)
say you have
gat gaa gac gtc tga ctg
try creating a structure that looks like
$struct->{g}{a}{t} = 1;
$struct->{g}{a}{a} = 1;
$struct->{g}{a}{c} = 1;
$struct->{g}{t}{c} = 1;
$struct->{t}{g}{a} = 1;
$struct->{c}{t}{g} = 1;
you can then drop out pretty quickly as soon as there isn't a possible
+ completion.
If this has nothing to do with your question ignore me. I don't know a thing about protine residue sequence-a-go-go so I'm taking a stab in the dark.