Java vs C++

시간 제한1초메모리 제한128 MB

문제

Java를 좋아하는 사람과 C++를 좋아하는 사람은 어느 언어가 더 나은지를 놓고 자주 논쟁을 벌인다. 그 논쟁거리 중 하나가 여러 단어로 이루어진 변수명을 표기하는 방식이다. 두 언어는 다음과 같이 서로 다른 규칙을 사용한다.

  • Java 방식: 첫 단어는 모두 소문자로 쓰고, 두 번째 단어부터는 각 단어의 첫 글자만 대문자로 쓴다. 단어와 단어는 붙여 쓴다. 예: javaIdentifier, longAndMnemonicIdentifier, name, hELLO
  • C++ 방식: 모든 글자를 소문자로 쓰고, 단어와 단어는 밑줄(_)로 구분한다. 예: c_identifier, long_and_mnemonic_identifier, name, h_e_l_l_o

변수명 하나가 주어지면, 그것이 어떤 방식인지 판별한 뒤 다른 방식으로 바꾸는 프로그램을 작성하자. 즉, C++ 방식이면 Java 방식으로, Java 방식이면 C++ 방식으로 변환한다. 변환 과정에서 단어의 순서는 그대로 유지된다.

올바른 C++ 방식 변수명은 밑줄로 시작하거나 끝나서는 안 되고, 밑줄이 연속으로 나와서도 안 된다(모든 밑줄은 두 단어 사이를 구분해야 한다). 올바른 Java 방식 변수명은 밑줄이 없어야 하고 첫 글자가 소문자여야 한다. 주어진 변수명이 Java 방식도 C++ 방식도 아니라면 오류를 출력한다.

입력

첫째 줄에 변수명이 주어진다. 변수명은 영어 알파벳과 밑줄(_)로만 이루어져 있으며, 길이는 100 이하이다.

출력

주어진 변수명이 Java 방식이면 C++ 방식으로 바꿔 출력한다. C++ 방식이면 Java 방식으로 바꿔 출력한다. 둘 다 아니라면 Error!를 출력한다.