//Haha TTPro
//http://codeforces.com/problemset/problem/118/A
//String Task
#include <iostream>
#include <string.h>
using namespace std;
struct NODE
{
char cha;
NODE * pNext;
};
void input(NODE*&head, char X[]);
void output(NODE*&head);
void Clean(NODE*&head);
void DeVowels(NODE*&head);
bool CheckVowels(char x);
void DeDummyNodehead(NODE*&head);
void DummyNodehead(NODE*&head);
void Replace(NODE*& head);
void Up(char &x);
int main()
{
char X[120];
cin.getline(X, 120);
NODE*head = NULL;
DummyNodehead(head);
input(head,X);
DeVowels(head);
DeDummyNodehead(head);
Replace(head);
output(head);
Clean(head);
}
void DummyNodehead(NODE*&head)
{
head = new NODE;
head->pNext = NULL;
}
void DeDummyNodehead(NODE*&head)
{
NODE*K;
K = head;
head = head->pNext;
delete K;
}
void CreateNode(NODE*&K, char a)
{
K = new NODE;
K->cha = a;
K->pNext = NULL;
}
void input(NODE*&head, char X[])
{
char a;
NODE *K,*cur;
cur = head;
for (int i =0; i < strlen(X);i++)
{
a=X[i];
if (a == '\0') break;
CreateNode(K,a);
cur->pNext = K;
cur = cur->pNext;
}
}
void output(NODE*&head)
{
NODE*cur;
cur = head;
while (cur != NULL)
{
cout << ".";
cout << cur->cha;
cur = cur->pNext;
}
}
void Clean(NODE*&head)
{
NODE*cur;
cur = head;
while (cur!=NULL)
{
head = head->pNext;
delete cur;
cur = head;
}
}
void DeVowels(NODE*&head)
{
NODE*cur;
NODE*del;
cur = head;
while (cur->pNext != NULL)
{
while (CheckVowels(cur->pNext->cha))
{
del = cur->pNext;
cur->pNext = del->pNext;
delete del;
if (cur->pNext == NULL) break;
}
cur = cur->pNext;
if (cur == NULL) break;
}
}
bool CheckVowels(char x)
{
if ((x == 'A') || (x == 'a') || (x == 'O') || (x == 'o') || (x == 'E') || (x == 'e') || (x == 'Y') || (x == 'y') || (x == 'U') || (x == 'u') || (x == 'i') || (x == 'I'))
{
return true;
}
return false;
}
void Up(char &x)
{
if ((x >= 65) && (x <= 90))
{
x = x + 32;
}
}
void Replace(NODE*& head)
{
if (head == NULL) return;
NODE* cur = head;
while (cur != NULL)
{
Up(cur->cha);
cur = cur->pNext;
}
}