added boyermoore algorithm