#include <iostream>
#include <string>

using namespace std;

int get_counter(string str, int start, int end, int counter){
    if (str[start] == str[end - 1]){ // если первая и последняя буквы слова совпадают, то
        counter++; // увеличиваем счётчик количества слов
    }
    return counter; // возвращаем счётчик
} 

int count_elements(string str, int i){
    while (ispunct(str[i]) || isspace(str[i])){ // пока текущий символ строки является пробелом или знаком пунктуации
        i++; // увеличичвать индекс 
    }
    return i; // возвращаем индекс
}

int counting(string str){
    int start = 0; // счётчик определения начала слова
    int end = 0; // счётчик определения конца слова
    int skip_count = 0; // счётчик пропусков
    int counter = 0; // счётчик количества слов, удовлетворяющих условию ТЗ

    for (int i = 0; i <= str.size(); i++){
        if (skip_count > 0){ // если есть ряд символов без букв
            skip_count--; // уменьшаем счётчик пропусков 
            continue; // переходим на следующую итерацию до следующей буквы в строке
        }
        if (ispunct(str[i]) || isspace(str[i]) || str[i] == '\0'){ // если текущий символ строки не является буквой, то
            end = i; // счётчик окончания равен текущему значению i
            counter = get_counter(str, start, end, counter);
            skip_count = count_elements(str, skip_count);
            end = count_elements(str, end);
            start = end; // присваиваем счётчику start значение от end для
        }
    }

    return counter;
}

int main(){
    string str; // вводимая строка
    int counter; // счётчик количества слов, удовлетворяющих условию ТЗ

    // ввод строк
    cout << "Input stroke: ";
    getline(cin, str);

    counter = counting(str);
    // итоговый вывод
    cout << endl << "Count: " << counter << endl;

    return 0;
}