Add a slight variant of naive algorithm
Use a Searcher trait to reduce code duplication