Dla każdej literki analizujesz cały tekst od początku, czyli przelatujesz dane kilkadziesiąt razy. Nie lepiej użyć tablicy z tymi kilkudziesięcioma pozycjami i od razu liczyć wszystkie litery (obojętnie jak długie będą dane wystarczy tyle pozycji, ile jest liter w alfabecie, dla ułatwienia można liczyć wszystkie znaki, 256 pozycji to nie jest duża tablica)?
To się nazywa histogram.
W zasadzie lepiej trzymać w pamięci tabelkę kilkudziesięciu liczników niż cały tekst wejściowy. Licząc histogram możesz czytać dane znak po znaku i od razu przetwarzać.
Po co zmienna o nazwie flag? I tak masz licznik, jeśli jest zero to znaczy, że dana literka nie wystąpiła, dodatkowa zmienna nie jest potrzebna.