#include <iostream>
#include <cstring>
using namespace std;
const int START=0;//start state
const int CONTINUE=1;//common prefix identifier state
const int JAVAWORD=2;//intermediate states
const int CPPWORD=3;
const int CPPDEL=4;//CPP-delimeter
const int JAVA=5;//final states
const int CPP=6;
const int UNIVERSAL=7;
const int JAVAERR=8;
const int CPPERR=9;
const int ERROR=10;
char var[101];
char result[203]={'\0'};
int reslen=0;
int state;
bool is_small(char c)
{
  return ('a'<= c && c <= 'z');
}
bool is_big(char c)
{
  return ('A'<= c && c <= 'Z');
}
bool is_underscore(char c)
{
  return (c == '_');
}
int selection_of_style(char * var, size_t len)
{
  char c=var[0];
  state = START;
  if(is_small(c))
    {
      state = CONTINUE;
    }
  if(is_big(c))
    {
      state = ERROR;
      return state;
    }
  if(is_underscore(c))
    {
      state = ERROR;
      return state;
    }
  for (int i=1; i<len; i++)
    {
      c=var[i];
      if(is_small(c)) state = state;
      if(is_big(c))
        {
          state = JAVAWORD;
          return state;
        }
      if(is_underscore(c))
        {
          state = CPPWORD;
          return state;
        }
    }
  //if(state==CONTINUE)
  state = UNIVERSAL;
  return state;
}
int is_java(char * var, size_t len)
{
  for (int i=0; i<len; i++)
    {
      char c=var[i];
      if(is_small(c))
        {
          state = state;
        }
      if(is_big(c))
        {
          state = state;
        }
      if(is_underscore(c))
        {
          state = JAVAERR;
          return state;
        }
    }
  if(state==JAVAWORD)
    {
      state = JAVA;
    }
  return state;
}
int is_cpp(char * var, size_t len)
{
  for (int i=0; i<len; i++)
    {
      char c=var[i];
      if(is_small(c))
        {
          if(state==CPPDEL)
            {
              state=CPPWORD;
            }
          else
            state = state;
        }
      if(is_big(c))
        {
          state = JAVAERR;
          return state;
        }

      if(is_underscore(c))
        {
          if(state==CPPDEL)
            {
              state=CPPERR;
              return state;
            }
          state=CPPDEL;
        }
    }
  if(state==CPPWORD)
    {
      state = CPP;
    }
  if(state==CPPDEL)
    {
      state=CPPERR;
    }
  return state;
}
void java_to_cpp(char * var, size_t len)
{
  for(int i=0; i<len; i++)
    {
      char c=var[i];
      if(is_small(c))
        {
          result[reslen++]=var[i];
        }
      if(is_big(c))
        {
          result[reslen++]='_';
          result[reslen++]=var[i]+32;
        }
    }
}
void cpp_to_java(char * var, size_t len)
{
  for(int i=0; i<len; i++)
    {
      char c=var[i];
      if(is_small(c))
        {
          result[reslen++]=var[i];
        }
      if(is_underscore(c))
        {
          result[reslen++]=var[++i]-32;
        }
    }
}
int main()
{
  cin >> var;
  size_t len = strlen(var);
  state=selection_of_style(var, len);
  if(state==ERROR)
    {
      cout << "Error!" << endl;
      return 0;
    }
  if(state==JAVAWORD)
    state = is_java(var,len);
  if(state==CPPWORD)
    state = is_cpp(var,len);
  if (state ==UNIVERSAL)
    {
      cout <<var<<endl;
      return 0;
    }
  if(state==JAVAERR)
    {
      cout << "Error!" << endl;
      return 0;
    }
  if(state==CPPERR)
    {
      cout << "Error!" << endl;
      return 0;
    }
  if(state==JAVA)
    {
      java_to_cpp(var,len);
      cout<<result;
      return 0;
    }
  if(state==CPP)
    {
      cpp_to_java(var,len);
      cout<<result;
      return 0;
    }
  return 0;
}
