better O(m) searching, worst case is still O(m*n)