#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct ss {string s;char typ;};
int main()
{
vector<ss> res;
string s;
string w;
bool isW;
bool com;
int nw,pos,l,posw,wc;
ss pst;
//cin >> s;
getline(cin,s);
l = s.length();
isW=false;
com=false;
string d="";
for(int i=0;i<l;i++)
{
if(!isW && ((s[i]>='A' && s[i]<='Z') || (s[i]>='a' && s[i]<='z')))
{
w=s[i];
isW = true;
if(d.length()>0)
{
pst.s = d;
if (com)
pst.typ=2;
else
pst.typ=1;
res.push_back(pst);
}
com=false;
}
else if (isW && ((s[i]>='A' && s[i]<='Z') || (s[i]>='a' && s[i]<='z')))
{
w+=s[i];
}
else if (isW && !((s[i]>='A' && s[i]<='Z') || (s[i]>='a' && s[i]<='z')))
{
if(w.length()>0)
{
pst.s = w;
if (w == "and" || w == "or" || w == "OR" || w == "oR" || w == "Or" || w == "And" || w == "ANd" || w == "AND" || w == "AnD" || w == "aNd" || w == "aND" || w == "anD")
pst.typ = 4;
else
pst.typ=3;
res.push_back(pst);
}
isW=false;
d = s[i];
if (s[i] == ',')
com=true;
}
else
{
d+=s[i];
if(s[i] == ',')
com=true;
}
}
l=res.size();
wc=0;
com=false;
for(int i=0;i<l;i++)
{
if(!wc)
{
if(res[i].typ == 2 && !wc && i)
{
wc = 1;
}
cout << res[i].s;
}
else
{
if (!com)
{
if(res[i].typ == 2 || res[i].typ == 4)
cout << res[i].s;
else if(res[i].typ == 3)
{
cout << res[i].s;
wc++;
}
else
com = true;
}
else
{
if(res[i].typ == 3)
{
cout << res[i-1].s << res[i].s;
}
else if (res[i].typ == 4)
{
if(wc >=2)
cout << ',' << res[i-1].s << res[i].s;
else
cout << res[i-1].s << res[i].s;
}
wc=0;
com=false;
}
}
}
cout << '.';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHNzIHtzdHJpbmcgcztjaGFyIHR5cDt9OwoKaW50IG1haW4oKQp7Cgl2ZWN0b3I8c3M+IHJlczsKCXN0cmluZyBzOwoJc3RyaW5nIHc7Cglib29sIGlzVzsKCWJvb2wgY29tOwoJaW50IG53LHBvcyxsLHBvc3csd2M7CglzcyBwc3Q7CgkKCS8vY2luID4+IHM7CglnZXRsaW5lKGNpbixzKTsKCQoJbCA9IHMubGVuZ3RoKCk7Cglpc1c9ZmFsc2U7Cgljb209ZmFsc2U7CglzdHJpbmcgZD0iIjsKCWZvcihpbnQgaT0wO2k8bDtpKyspCgl7CgkJaWYoIWlzVyAmJiAoKHNbaV0+PSdBJyAmJiBzW2ldPD0nWicpIHx8IChzW2ldPj0nYScgJiYgc1tpXTw9J3onKSkpCgkJewoJCQl3PXNbaV07CgkJCWlzVyA9IHRydWU7CgkJCWlmKGQubGVuZ3RoKCk+MCkKCQkJewoJCQkJcHN0LnMgPSBkOwoJCQkJaWYgKGNvbSkKCQkJCQlwc3QudHlwPTI7CgkJCQllbHNlCgkJCQkJcHN0LnR5cD0xOwoJCQkJcmVzLnB1c2hfYmFjayhwc3QpOwoJCQl9CgkJCWNvbT1mYWxzZTsKCQl9CgkJZWxzZSBpZiAoaXNXICYmICgoc1tpXT49J0EnICYmIHNbaV08PSdaJykgfHwgKHNbaV0+PSdhJyAmJiBzW2ldPD0neicpKSkKCQl7CgkJCXcrPXNbaV07CgkJfQoJCWVsc2UgaWYgKGlzVyAmJiAhKChzW2ldPj0nQScgJiYgc1tpXTw9J1onKSB8fCAoc1tpXT49J2EnICYmIHNbaV08PSd6JykpKQoJCXsKCQkJaWYody5sZW5ndGgoKT4wKQoJCQl7CgkJCQlwc3QucyA9IHc7CgkJCQlpZiAodyA9PSAiYW5kIiB8fCB3ID09ICJvciIgfHwgdyA9PSAiT1IiIHx8IHcgPT0gIm9SIiB8fCB3ID09ICJPciIgfHwgdyA9PSAiQW5kIiB8fCB3ID09ICJBTmQiIHx8IHcgPT0gIkFORCIgfHwgdyA9PSAiQW5EIiB8fCB3ID09ICJhTmQiIHx8IHcgPT0gImFORCIgfHwgdyA9PSAiYW5EIikKCQkJCQlwc3QudHlwID0gNDsKCQkJCWVsc2UKCQkJCQlwc3QudHlwPTM7CgkJCQlyZXMucHVzaF9iYWNrKHBzdCk7CgkJCX0KCQkJaXNXPWZhbHNlOwoJCQlkID0gc1tpXTsKCQkJaWYgKHNbaV0gPT0gJywnKQoJCQkJY29tPXRydWU7CgkJfQoJCWVsc2UKCQl7CgkJCWQrPXNbaV07CgkJCWlmKHNbaV0gPT0gJywnKQoJCQkJY29tPXRydWU7CgkJfQoJfQoJbD1yZXMuc2l6ZSgpOwoJd2M9MDsKCWNvbT1mYWxzZTsKCWZvcihpbnQgaT0wO2k8bDtpKyspCgl7CgkJaWYoIXdjKQoJCXsKCQkJaWYocmVzW2ldLnR5cCA9PSAyICYmICF3YyAmJiBpKQoJCQl7CgkJCQl3YyA9IDE7CgkJCX0KCQkJY291dCA8PCByZXNbaV0uczsJCQkKCQl9CgkJZWxzZQoJCXsKCQkJaWYgKCFjb20pCgkJCXsKCQkJCWlmKHJlc1tpXS50eXAgPT0gMiB8fCAgcmVzW2ldLnR5cCA9PSA0KQoJCQkJCWNvdXQgPDwgcmVzW2ldLnM7CgkJCQllbHNlIGlmKHJlc1tpXS50eXAgPT0gMykKCQkJCXsKCQkJCQljb3V0IDw8IHJlc1tpXS5zOwoJCQkJCXdjKys7CgkJCQl9CgkJCQllbHNlCgkJCQkJY29tID0gdHJ1ZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWlmKHJlc1tpXS50eXAgPT0gMykKCQkJCXsKCQkJCQljb3V0IDw8IHJlc1tpLTFdLnMgPDwgcmVzW2ldLnM7CgkJCQl9CgkJCQllbHNlIGlmIChyZXNbaV0udHlwID09IDQpCgkJCQl7CgkJCQkJaWYod2MgPj0yKQoJCQkJCQljb3V0IDw8ICcsJyA8PCByZXNbaS0xXS5zIDw8IHJlc1tpXS5zOwoJCQkJCWVsc2UKCQkJCQkJY291dCA8PCByZXNbaS0xXS5zIDw8IHJlc1tpXS5zOwoJCQkJfQoJCQkJd2M9MDsKCQkJCWNvbT1mYWxzZTsKCQkJfQoJCX0KCX0KCWNvdXQgPDwgJy4nOwoJcmV0dXJuIDA7Cn0=