#include <iostream>
#include <algorithm>
#include <cctype>
#include <map>
std:: map < std:: string , std:: string > dict {
{ "A" , "4" } ,
{ "B" , "6" } ,
{ "E" , "3" } ,
{ "I" , "1" } ,
{ "L" , "|" } ,
{ "M" , "(V)" } ,
{ "N" , "(\\ )" } ,
{ "O" , "0" } ,
{ "S" , "5" } ,
{ "T" , "7" } ,
{ "U" , "\\ /" } ,
{ "W" , "`//" }
} ;
bool is_l33t( const std:: string & input)
{
for ( const auto & kv: dict)
if ( input.find ( kv.second ) ! = std:: string :: npos )
return true ;
return false ;
}
std:: string search_replace( std:: string source, const std:: string & haystack, const std:: string & needle)
{
int idx;
while ( ( idx = source.find ( haystack) ) ! = std:: string :: npos )
{
source = source.replace ( idx, haystack.length ( ) , needle) ;
}
return source;
}
int main( )
{
std:: string line;
while ( getline( std:: cin , line) )
{
std:: transform ( line.begin ( ) , line.end ( ) , line.begin ( ) , :: toupper ) ;
std:: cout << line << " -> " ;
bool l33t = is_l33t( line) ;
for ( const auto & kv: dict)
{
std:: string from = l33t ? kv.second : kv.first ;
std:: string to = l33t ? kv.first : kv.second ;
line = search_replace( line, from, to) ;
//std::cout << "\t" << line << std::endl;
}
std:: cout << line << std:: endl ;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoJI2luY2x1ZGUgPGFsZ29yaXRobT4KCSNpbmNsdWRlIDxjY3R5cGU+CgkjaW5jbHVkZSA8bWFwPgoKCXN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gZGljdCB7CgkJeyJBIiwgIjQifSwKCQl7IkIiLCAiNiJ9LAoJCXsiRSIsICIzIn0sCgkJeyJJIiwgIjEifSwKCQl7IkwiLCAifCJ9LAoJCXsiTSIsICIoVikifSwKCQl7Ik4iLCAiKFxcKSJ9LAoJCXsiTyIsICIwIn0sCgkJeyJTIiwgIjUifSwKCQl7IlQiLCAiNyJ9LAoJCXsiVSIsICJcXC8ifSwKCQl7IlciLCAiYC8vIn0KCX07CgoJYm9vbCBpc19sMzN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dCkKCXsKCQlmb3IoY29uc3QgYXV0byYga3Y6IGRpY3QpCgkJCWlmKGlucHV0LmZpbmQoa3Yuc2Vjb25kKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKCQkJCXJldHVybiB0cnVlOwoJCXJldHVybiBmYWxzZTsKCX0KCglzdGQ6OnN0cmluZyBzZWFyY2hfcmVwbGFjZShzdGQ6OnN0cmluZyBzb3VyY2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBoYXlzdGFjaywgY29uc3Qgc3RkOjpzdHJpbmcmIG5lZWRsZSkKCXsKCQlpbnQgaWR4OwoJCXdoaWxlKChpZHggPSBzb3VyY2UuZmluZChoYXlzdGFjaykpICE9IHN0ZDo6c3RyaW5nOjpucG9zKQoJCXsKCQkJc291cmNlID0gc291cmNlLnJlcGxhY2UoaWR4LCBoYXlzdGFjay5sZW5ndGgoKSwgbmVlZGxlKTsKCQl9CgkJcmV0dXJuIHNvdXJjZTsKCX0KCglpbnQgbWFpbigpCgl7CgkJc3RkOjpzdHJpbmcgbGluZTsKCQl3aGlsZShnZXRsaW5lKHN0ZDo6Y2luLCBsaW5lKSkKCQl7CgkJCXN0ZDo6dHJhbnNmb3JtKGxpbmUuYmVnaW4oKSwgbGluZS5lbmQoKSwgbGluZS5iZWdpbigpLCA6OnRvdXBwZXIpOwoJCQlzdGQ6OmNvdXQgPDwgbGluZSA8PCAiIC0+ICI7CgkJCWJvb2wgbDMzdCA9IGlzX2wzM3QobGluZSk7CgkJCWZvcihjb25zdCBhdXRvJiBrdjogZGljdCkKCQkJewoJCQkJc3RkOjpzdHJpbmcgZnJvbSA9IGwzM3QgPyBrdi5zZWNvbmQgOiBrdi5maXJzdDsKCQkJCXN0ZDo6c3RyaW5nIHRvID0gbDMzdCA/IGt2LmZpcnN0IDoga3Yuc2Vjb25kOwoJCQkJbGluZSA9IHNlYXJjaF9yZXBsYWNlKGxpbmUsIGZyb20sIHRvKTsKCQkJCS8vc3RkOjpjb3V0IDw8ICJcdCIgPDwgbGluZSA8PCBzdGQ6OmVuZGw7CgkJCX0KCQkJc3RkOjpjb3V0IDw8IGxpbmUgPDwgc3RkOjplbmRsOwoJCX0KCQlyZXR1cm4gMDsKCX0=