Ну для начала надо составить алгоритм. Если не ошибся,он у вас такой:
1. В цикле пробегаемся по элементам.
2. Берем текущий элемент и следующий из template и текущий элемент и следующий из array
3. Если в них содержатся одни и те же буквы, то создаем группы, порядок не важен
4. Если разные, то сравниваем текущую букву из template и array. Если они равны, то создаем группу.
Но тогда один момент не понятен, почему после 4 вашего шага не создается группа только из буквы "А"?
Вполне возможно действует одно из ограничений:
1. если буква использовалась в другой группе, то на основе него нельзя создать отдельную группу
2. если буква не в начале слова, то нельзя создать группу только из 1 элемента