CamelCase

Time Limit : 1 sec, Memory Limit : 65536 KB

Problem P04: CamelCase

プログラミングにおける識別子(変数や関数)の命名では、 単語を連結した複合語が使われる。 しかし、そのまま連結すると単語の区切りがわからなくなるため、 一般的に以下の命名規則の中から統一するものを選び適用する:

  • Upper CamelCase にする
    単語を直接連結し複合語とし、各単語の先頭文字のみを大文字にする。
    例: GetUserName
  • Lower CamelCase にする
    単語を直接連結し複合語とし、各単語の先頭文字のみを大文字にする。ただし、複合語の先頭文字は小文字にする。
    例: getUserName
  • アンダースコアで繋ぐ
    単語をアンダースコアで連結し複合語とする。単語の文字はすべて小文字にする。
    例: get_user_name

与えられた識別子を、指定された命名規則を適用して出力するプログラムを作成せよ。 与えられる識別子は、上記の命名規則のいづれかが既に適用されているものとする。

Input

入力として複数のデータセットが与えられる。各データセットは以下の形式で与えられる:

name type (識別子、命名規則: 空白区切りの文字列と文字)

typeは命名規則を示す文字であり、以下の表の通りとする:

type命名規則
UUpper CamelCase にする
LLower CamelCase にする
Dアンダースコアで繋ぐ

与えられる識別子の文字数は 1 以上 100 以下である。

type が 'X' のとき入力の終わりとする。この入力に対する出力を行ってはならない。

Output

各データセットについて、命名規則を適用した識別子を1行に出力せよ。

Sample Input

get_user_name L
getUserName U
GetUserName D
EndOfInput X

Output for the Sample Input

getUserName
GetUserName
get_user_name

Source: PC Koshien 2009 Warm-Up Contest , Aizu-Wakamatsu, Japan, 2009-08-22