в си совершенно естественно завести массив размера 256 и символ использовать в качестве индекса этого массива и так вот посчитать. После чего для первой части - количество ненулевых элементов массива, а для второй количество элементов, равных "число переносов"+1. А переносы при этом тоже посчитаны уже.
так ну смотри, тут тоже не один проход, один по n, другой по 256
если 256 игнорить, то и в хаскельном твоем решении тоже один проход