Petya started to attend programming lessons. On the first lesson his task was to write a simple program. The program was supposed to do the following: in the given string, consisting if uppercase and lowercase Latin letters, it: 
 -  deletes all the vowels, -  inserts a character "." before each consonant, -  replaces all uppercase consonants with corresponding lowercase ones. 
Vowels are letters "A", "O", "Y", "E", "U", "I", and the rest are consonants. The program's input is exactly one string, it should return the output as a single string, resulting after the program's processing the initial string.

Help Petya cope with this easy task.
The first line represents input string of Petya's program. This string only consists of uppercase and lowercase Latin letters and its length is from 1 to 100, inclusive.
tour
.t.r
Codeforces
.c.d.f.r.c.s
aBAcAba
.b.c.b
obn
.b.n
wpwl
.w.p.w.l
ggdvq
.g.g.d.v.q
pumesz
.p.m.s.z
g
.g
zjuotps
.z.j.t.p.s
jzbwuehe
.j.z.b.w.h
tnkgwuugu
.t.n.k.g.w.g
kincenvizh
.k.n.c.n.v.z.h
xattxjenual
.x.t.t.x.j.n.l
ktajqhpqsvhw
.k.t.j.q.h.p.q.s.v.h.w
xnhcigytnqcmy
.x.n.h.c.g.t.n.q.c.m
jfmtbejyilxcec
.j.f.m.t.b.j.l.x.c.c
D
.d
ab
.b
Ab
.b
aB
.b
AB
.b
ba
.b
bA
.b
Ba
.b
BA
.b
aab
.b
baa
.b
femOZeCArKCpUiHYnbBPTIOFmsHmcpObtPYcLCdjFrUMIyqYzAokKUiiKZRouZiNMoiOuGVoQzaaCAOkquRjmmKKElLNqCnhGdQM
.f.m.z.c.r.k.c.p.h.n.b.b.p.t.f.m.s.h.m.c.p.b.t.p.c.l.c.d.j.f.r.m.q.z.k.k.k.z.r.z.n.m.g.v.q.z.c.k.q.r.j.m.m.k.k.l.l.n.q.c.n.h.g.d.q.m
VMBPMCmMDCLFELLIISUJDWQRXYRDGKMXJXJHXVZADRZWVWJRKFRRNSAWKKDPZZLFLNSGUNIVJFBEQsMDHSBJVDTOCSCgZWWKvZZN
.v.m.b.p.m.c.m.m.d.c.l.f.l.l.s.j.d.w.q.r.x.r.d.g.k.m.x.j.x.j.h.x.v.z.d.r.z.w.v.w.j.r.k.f.r.r.n.s.w.k.k.d.p.z.z.l.f.l.n.s.g.n.v.j.f.b.q.s.m.d.h.s.b.j.v.d.t.c.s.c.g.z.w.w.k.v.z.z.n
MCGFQQJNUKuAEXrLXibVjClSHjSxmlkQGTKZrRaDNDomIPOmtSgjJAjNVIVLeUGUAOHNkCBwNObVCHOWvNkLFQQbFnugYVMkJruJ
.m.c.g.f.q.q.j.n.k.x.r.l.x.b.v.j.c.l.s.h.j.s.x.m.l.k.q.g.t.k.z.r.r.d.n.d.m.p.m.t.s.g.j.j.j.n.v.v.l.g.h.n.k.c.b.w.n.b.v.c.h.w.v.n.k.l.f.q.q.b.f.n.g.v.m.k.j.r.j
iyaiuiwioOyzUaOtAeuEYcevvUyveuyioeeueoeiaoeiavizeeoeyYYaaAOuouueaUioueauayoiuuyiuovyOyiyoyioaoyuoyea
.w.z.t.c.v.v.v.v.z.v
yjnckpfyLtzwjsgpcrgCfpljnjwqzgVcufnOvhxplvflxJzqxnhrwgfJmPzifgubvspffmqrwbzivatlmdiBaddiaktdsfPwsevl
.j.n.c.k.p.f.l.t.z.w.j.s.g.p.c.r.g.c.f.p.l.j.n.j.w.q.z.g.v.c.f.n.v.h.x.p.l.v.f.l.x.j.z.q.x.n.h.r.w.g.f.j.m.p.z.f.g.b.v.s.p.f.f.m.q.r.w.b.z.v.t.l.m.d.b.d.d.k.t.d.s.f.p.w.s.v.l
RIIIUaAIYJOiuYIUWFPOOAIuaUEZeIooyUEUEAoIyIHYOEAlVAAIiLUAUAeiUIEiUMuuOiAgEUOIAoOUYYEYFEoOIIVeOOAOIIEg
.r.j.w.f.p.z.h.l.v.l.m.g.f.v.g
VBKQCFBMQHDMGNSGBQVJTGQCNHHRJMNKGKDPPSQRRVQTZNKBZGSXBPBRXPMVFTXCHZMSJVBRNFNTHBHGJLMDZJSVPZZBCCZNVLMQ
.v.b.k.q.c.f.b.m.q.h.d.m.g.n.s.g.b.q.v.j.t.g.q.c.n.h.h.r.j.m.n.k.g.k.d.p.p.s.q.r.r.v.q.t.z.n.k.b.z.g.s.x.b.p.b.r.x.p.m.v.f.t.x.c.h.z.m.s.j.v.b.r.n.f.n.t.h.b.h.g.j.l.m.d.z.j.s.v.p.z.z.b.c.c.z.n.v.l.m.q
iioyoaayeuyoolyiyoeuouiayiiuyTueyiaoiueyioiouyuauouayyiaeoeiiigmioiououeieeeyuyyaYyioiiooaiuouyoeoeg
.l.t.g.m.g
ueyiuiauuyyeueykeioouiiauzoyoeyeuyiaoaiiaaoaueyaeydaoauexuueafouiyioueeaaeyoeuaueiyiuiaeeayaioeouiuy
.k.z.d.x.f
FSNRBXLFQHZXGVMKLQDVHWLDSLKGKFMDRQWMWSSKPKKQBNDZRSCBLRSKCKKFFKRDMZFZGCNSMXNPMZVDLKXGNXGZQCLRTTDXLMXQ
.f.s.n.r.b.x.l.f.q.h.z.x.g.v.m.k.l.q.d.v.h.w.l.d.s.l.k.g.k.f.m.d.r.q.w.m.w.s.s.k.p.k.k.q.b.n.d.z.r.s.c.b.l.r.s.k.c.k.k.f.f.k.r.d.m.z.f.z.g.c.n.s.m.x.n.p.m.z.v.d.l.k.x.g.n.x.g.z.q.c.l.r.t.t.d.x.l.m.x.q
EYAYAYIOIOYOOAUOEUEUOUUYIYUUMOEOIIIAOIUOAAOIYOIOEUIERCEYYAOIOIGYUIAOYUEOEUAEAYPOYEYUUAUOAOEIYIEYUEEY
.m.r.c.g.p
jvvzcdcxjstbbksmqjsngxkgtttdxrljjxtwptgwwqzpvqchvgrkqlzxmptzblxhhsmrkmzzmgdfskhtmmnqzzflpmqdctvrfgtx
.j.v.v.z.c.d.c.x.j.s.t.b.b.k.s.m.q.j.s.n.g.x.k.g.t.t.t.d.x.r.l.j.j.x.t.w.p.t.g.w.w.q.z.p.v.q.c.h.v.g.r.k.q.l.z.x.m.p.t.z.b.l.x.h.h.s.m.r.k.m.z.z.m.g.d.f.s.k.h.t.m.m.n.q.z.z.f.l.p.m.q.d.c.t.v.r.f.g.t.x
YB
.b
fly
.f.l
YyyYYYyyYxdwdawdDAWDdaddYYYY
.x.d.w.d.w.d.d.w.d.d.d.d
'''def Maximum_Money(arr):
    n = len(arr)
    #Even after rotation the value of money wont change!
    #So, an - a1 will be maximum when a1 is minimum or an is maximum
    #for it to be true we rotate it in such a way a1 contains always minimum value in array or an contains maximum!.
    #so find min and max and max-min will help us identify it.
    min_val = arr[0]
    max_val = arr[0]
    for i in range(n):
        if(arr[i] > max_val):
            max_val = arr[i]
        if(arr[i] < min_val):
            min_val = arr[i]
    #If whole array is rotated
    # l = n-1 and r = n-2; for next l = n-2 and r = n-3 ..... till l = 0 and r = -1
    ans = arr[n-1] - arr[0]
    for i in range(n):
        L = n - 1 - i
        R = n - 2 - i        
        if(arr[R] - arr[L] > ans):
            ans = arr[R] - arr[L]
    #Simple check if whole array is not rotated!
    a = max_val - arr[0]
    b = arr[n-1] - min_val
    if(ans > a and ans > b):
        return ans
    if(a >= b):
        return a
    else:
        return b
    

#Driver CODE
if __name__ == "__main__":
    a = [1, 9, 8, 4, 6]
    b = [3, 2, 10, 8]
    c = [6, 10, 2, 5, 10, 3, 1, 9, 10, 10]
    d = [10, 7, 5, 1, 10, 10, 9, 7, 3, 2]
    print(Maximum_Money(a))
    print(Maximum_Money(b))
    print(Maximum_Money(c))
    print(Maximum_Money(d))'''

word = input()
vowel = ['A', 'E', 'I', 'O','U', 'a', 'e', 'i', 'o', 'u']
ans = []
for i in word:
    ans.append(i)
for i in range(len(ans)):
    if(ans[i] in vowel):
        ans[i] = "$"
    else:
        if(ans[i].isupper()):
            ans[i] = "." + ans[i].lower()
        else:
            ans[i] = "." + ans[i]
string = ""
for i in ans:
    if(i != "$"):
        string += i
print(string)
        
