Нужна помощь с одной олимпиадой

Всем привет! Нужна помощь с одной задачей из онлайн тура олимпиады по информатике. Я прекрасно понимаю, что это я её решаю, и я сам должен над всем думать. Но из 7 заданных задач смог решить только 4 (для прохода в следующий тур нужно решить 3) и хочется перестраховаться. Так же я понимаю, что никто мне бесплатно не будет решать эту задачу полностью, так что просто прошу предложить идею для решения. Язык C# или на крайний случай PascalABC.

Комментарии для минусов внутри.
Сама задача:

На вход программы поступает строка текста, в которой могут встречаться:

— прописные и строчные (т.е. большие и маленькие) латинские буквы;

— пробелы;

— знаки препинания: точка, запятая, восклицательный и вопросительный знак;

— символ –, обозначающий в некоторых случаях тире, а в некоторых — дефис.

Слово — это последовательность подряд идущих латинских букв и знаков дефис, ограниченная с обоих концов. В качестве ограничителей могут выступать начало строки, конец строки, пробел, знак препинания, тире. Тире отличается от дефиса тем, что слева и справа от знака дефис пишутся буквы, а хотя бы с одной стороны от тире идет либо начало строки, либо конец строки, либо пробел, либо какой-либо знак препинания, либо еще одно тире.


Напишите программу, определяющую, сколько слов в данной строке текста.


Входные данные

Вводится строка длиной не более 200 символов.


Выходные данные

Выведите одно число — количество слов, которые содержатся в исходной строке.


UPD: Возможно я неправильно сформулировал вопрос, но постараюсь по-другому. То что можно идти по строке и считать пробелы это и так понятно, вопрос в том, каким образом в переменной STRING проверять символы. Какой для этого потребуется оператор.