#include <algorithm>
#include <iostream>
#include <iterator>
#include <limits>
#include <locale>
#include <sstream>
#include <string>
const std::string VOWELS = "AEIOUY"; // assume Y is always a vowel
int main()
{
// read the input
std::string input;
while (!(std::cin >> input))
{
std::cout << "Invalid input, try again\n";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
// erase vowels
input.erase(std::remove_if(input.begin(), input.end(), [&](char c)
{
std::locale loc;
c = std::toupper(c, loc);
return std::find(VOWELS.cbegin(), VOWELS.cend(), c) != VOWELS.cend();
}), input.end());
// transform to lowercase
std::transform(input.begin(), input.end(), input.begin(), [](char c)
{
std::locale loc;
return std::tolower(c, loc);
});
// add . before every remaining letter
std::ostringstream oss;
std::for_each(input.begin(), input.end(), [&](char c)
{
std::locale loc;
if (std::isalpha(c, loc))
{
oss << ".";
}
oss << c;
});
input = oss.str();
std::cout << "Resulting string: " << input << std::endl;
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxsaW1pdHM+CiNpbmNsdWRlIDxsb2NhbGU+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKY29uc3Qgc3RkOjpzdHJpbmcgVk9XRUxTID0gIkFFSU9VWSI7IC8vIGFzc3VtZSBZIGlzIGFsd2F5cyBhIHZvd2VsCgppbnQgbWFpbigpCnsKICAgIC8vIHJlYWQgdGhlIGlucHV0CiAgICBzdGQ6OnN0cmluZyBpbnB1dDsKCXdoaWxlICghKHN0ZDo6Y2luID4+IGlucHV0KSkKCXsKCSAgICBzdGQ6OmNvdXQgPDwgIkludmFsaWQgaW5wdXQsIHRyeSBhZ2FpblxuIjsKCQlzdGQ6OmNpbi5jbGVhcigpOwoJCXN0ZDo6Y2luLmlnbm9yZShzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c3RyZWFtc2l6ZT46Om1heCgpLCAnXG4nKTsKCX0KCQoJLy8gZXJhc2Ugdm93ZWxzCglpbnB1dC5lcmFzZShzdGQ6OnJlbW92ZV9pZihpbnB1dC5iZWdpbigpLCBpbnB1dC5lbmQoKSwgWyZdKGNoYXIgYykKCXsKCSAgICBzdGQ6OmxvY2FsZSBsb2M7CgkJYyA9IHN0ZDo6dG91cHBlcihjLCBsb2MpOwoJCXJldHVybiBzdGQ6OmZpbmQoVk9XRUxTLmNiZWdpbigpLCBWT1dFTFMuY2VuZCgpLCBjKSAhPSBWT1dFTFMuY2VuZCgpOwoJfSksIGlucHV0LmVuZCgpKTsKCQoJLy8gdHJhbnNmb3JtIHRvIGxvd2VyY2FzZQoJc3RkOjp0cmFuc2Zvcm0oaW5wdXQuYmVnaW4oKSwgaW5wdXQuZW5kKCksIGlucHV0LmJlZ2luKCksIFtdKGNoYXIgYykKCXsKCSAgICBzdGQ6OmxvY2FsZSBsb2M7CgkJcmV0dXJuIHN0ZDo6dG9sb3dlcihjLCBsb2MpOwoJfSk7CgkKCS8vIGFkZCAuIGJlZm9yZSBldmVyeSByZW1haW5pbmcgbGV0dGVyCglzdGQ6Om9zdHJpbmdzdHJlYW0gb3NzOwoJc3RkOjpmb3JfZWFjaChpbnB1dC5iZWdpbigpLCBpbnB1dC5lbmQoKSwgWyZdKGNoYXIgYykKCXsKCSAgICBzdGQ6OmxvY2FsZSBsb2M7CgkgICAgaWYgKHN0ZDo6aXNhbHBoYShjLCBsb2MpKQoJCXsKCQkgICAgb3NzIDw8ICIuIjsKCQl9CgkJb3NzIDw8IGM7Cgl9KTsKCQoJaW5wdXQgPSBvc3Muc3RyKCk7CglzdGQ6OmNvdXQgPDwgIlJlc3VsdGluZyBzdHJpbmc6ICAiIDw8IGlucHV0IDw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybiAwOwp9