#include <iostream> // подключение библиотеки ввода-вывода
#include <string> // подключение библиотеки для работы со строками

using namespace std; // пространство имён

int main(){
	string str; // вводимая строка
	char letter; // искомая буква
	int count = 0; // счётчик для количества подсчитанных слов
	int space = 0; // счётчик для проверки на пробелы в строке
	bool c = false; // переменная проверки на разделитель
	string word; // строка для слова
	int start = 0, finish = 0; // значения начала и конца слова

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

	// проверка на пустоту строки
	if (str.empty()){ // если строка пуста, то
		cout << "String can't be empty" << endl; // вывод сообщения об ошибке
		exit(0); // завершение программы
	}
	else { // иначе проверка на пробелы
		for (int i = 0; i < str.size(); i++){ // цикл на всю строку
			if (str[i] == ' '){ // если символ является пробелом, то
				space++; // увеличиваем счётчик
			}
		}
		if (space == str.size()) { // если количество пробелов равно размеру строки, то
			cout << "String have only spaces." << endl; // вывод сообщения об ошибке
			exit(0); // завершение программы
		}
	}

	cout << "Input letter: " << endl;
	letter = getchar(); // ввод буквы

	// проверка на пустоту вводимого символа
	if ((letter == '\n') || (letter == ' ')){ // если символ является переходом на новую строку или пробелом, то
		cout << "Letter can't be empty" << endl; // вывод сообщения об ошибке
		exit(0); // завершение программы
	}

	for (int i = 0; i < str.size(); i++){ // цикл на полную строку
		if (str[i] == ' '){ // если текущий символ является пробелом, то
			finish = i;  // объявляем концом слова значение i
			word = str.substr(start, (finish - start)); // присваиваем символы от start до finish переменной word
			for (int j = 0; j < word.size(); j++){ // цикл на слово
				if (word[j] == letter){ // если в слове есть искомая буква, то
					count++; // увеличиваем счётчик
					break; // останавливаем цикл по слову
				}
			}
			start = finish + 1; // изменяем значение start на finish + 1 для пропуска пробела
			c = true; // меняем значение c на true, так как в строке есть пробелы
		}
	}
	// проверка последнего слова, которое не вошло в основной цикл
	word = str.substr(start, (finish - start));
	for (int j = 0; j < word.size(); j++){
		if (word[j] == letter){
			count++;
			break;
		}
	}

	if (c == false){ // если в строке нет пробелов, то
		for (int i = 0; i < str.size(); i++){ // цикл на строку
			if (str[i] == letter){ // если символ является искомой буквой
				count++;// увеличиваем счётчик
				break; // останавливаем цикл по слову
			}
		}
	}

	cout << "Count of words: " << count << endl; // вывод счётчика

	return 0; // успешное завершение программы
}
