Jeśli już decydujesz się sprawdzać poprawność wejścia, to warto program kończyć z niezerowym kodem wyjścia gdy okaże się że wejście nie spełnia warunków zadania (używając np. makra assert, albo exit(1)). Zaletą takiego rozwiązania jest możliwość odróżnienia tej sytuacji, od zwykłej błędnej odpowiedzi udzielonej przez program. Niestety, ale sporadycznie zdarzają się problemy z błędnym wejściem, w szczególności pośród nowych problemów.
Generalnie jednak, jeśli spełnienie danego warunku nie ma wpływu na poprawność zaimplementowanego algorytmu to celowość sprawdzenia jest raczej niewielka. Przykładowo, długie zdania nie sprawią powyższemu algorytmowi większych problemów (aż do długości INT_MAX przy której zaczynają się dziać dziwne rzeczy).
Wracając do meritum to problematycznie wygląda wypisywanie częstości liter po każdym zdaniu. Powinno to nastąpić raz po przetworzeniu wszystkich zdań.