I don't understand. If it returns 0, then you just return -1?
```D
size_t n = haystack.findAmong(needles).length;
return n ? haystack.length - n : -1;
```
Or did I miss something?

> So I think two loops are not that bad.

It's not just about not having two loops: If you use `find`/`findAmong`, then you are avoiding duplicate code, and you are also benefiting from `find`'s complex but highly optimized behavior.