#include <algorithm>
#include <cctype>
#include <iostream>
#include <regex>
#include <string>
#include <unordered_map>
int main()
{
const std::string str = "Eniki,beniki, eli vareniki; Eli i eli poka ne doeli beniki vareniki.";
const std::regex reg("\\w+");
std::unordered_map<std::string, int> words;
for (std::sregex_iterator next(str.begin(), str.end(), reg), end; next != end; ++next)
{
std::string word = next->str();
std::transform(word.begin(), word.end(), word.begin(), tolower);
++words[word];
}
for (auto p : words)
std::cout << p.first << " " << p.second << std::endl;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNjdHlwZT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgogCmludCBtYWluKCkKewoJY29uc3Qgc3RkOjpzdHJpbmcgc3RyID0gIkVuaWtpLGJlbmlraSwgZWxpIHZhcmVuaWtpOyBFbGkgaSBlbGkgcG9rYSBuZSBkb2VsaSBiZW5pa2kgdmFyZW5pa2kuIjsKCWNvbnN0IHN0ZDo6cmVnZXggcmVnKCJcXHcrIik7CiAKCXN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgaW50PiB3b3JkczsKCWZvciAoc3RkOjpzcmVnZXhfaXRlcmF0b3IgbmV4dChzdHIuYmVnaW4oKSwgc3RyLmVuZCgpLCByZWcpLCBlbmQ7IG5leHQgIT0gZW5kOyArK25leHQpCgl7CgkJc3RkOjpzdHJpbmcgd29yZCA9IG5leHQtPnN0cigpOwoJCXN0ZDo6dHJhbnNmb3JtKHdvcmQuYmVnaW4oKSwgd29yZC5lbmQoKSwgd29yZC5iZWdpbigpLCB0b2xvd2VyKTsKCQkrK3dvcmRzW3dvcmRdOwoJfQoJCglmb3IgKGF1dG8gcCA6IHdvcmRzKQoJCXN0ZDo6Y291dCA8PCBwLmZpcnN0IDw8ICIgIiA8PCBwLnNlY29uZCA8PCBzdGQ6OmVuZGw7Cn0=