Есть ли другой алгоритм решения задачи?
Ты используешь регулярку для того чтобы делать разделение английского текста на слова.
String[] words = verse.toLowerCase().split("[\\s.,?!\\d]+");
Можно решать другую (обратную) задачу - выделить английские слова которые стартуют с нужных букв.
И посчитать по регулярке количество найденных групп.
Если задача "посчитать слова, которые начинаются с буквы", то ты можешь, например, сложить искомые буквы в массив или hashset и делать letters.contains(word[0])