#include <stdio.h>
#include <string.h>

/* 
   Character sets include:
   0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_.@
*/
#define MAX_CHAR_SET     65
#define MAX_BUF_SIZE   2048

#define OBFUS_TEMPLATE "#define MAGIC \"%s%s\"\n" \
"#define _(p,o,q) (t o#p[0])?(q)\n#define __(p,o,q) _(p,o,t-q)\n" \
"int main(){int t, i; for(i=%d;i>0;i--)" \
"printf(\"%%c\", MAGIC[(((t=(MAGIC+%d)[i-1])==\'_\')?62:_(.,==,63):_(@,==,64):" \
"__(a,>=,'a'+36):__(A,>=,'A'+10):(t-\'0\'))]);}\n"
#define MAP_CHAR(x,t) (((t=(x))=='_') ? 62 : (t=='.') ? 63 : (t=='@') ? 64 : \
(t>='a') ? (t-'a'+36) : (t>='A') ? (t-'A'+10) : (t-'0'))

int main (int argc, char *argv[])
{
	int len = 0, i, idx = 0;
	char *srcstr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
		"abcdefghijklmnopqrstuvwxyz_.@";
	char mailid[MAX_BUF_SIZE], charset[MAX_CHAR_SET][2],
		char_srcs[MAX_CHAR_SET], t;

	scanf("%s", mailid);
	len = strlen(mailid);
	memset(charset[0], 0x0, sizeof(charset));
	for (i = 0; i < len; i++) 
		charset[MAP_CHAR(mailid[i], t)][0] = 1;
	for (i = 0; i < MAX_CHAR_SET; i++)
		if (charset[i][0]) {
			char_srcs[idx] = srcstr[i];
			charset[i][1] = srcstr[idx++];
		}
	for (i = 0; i < len; i++)
		mailid[i] = charset[MAP_CHAR(mailid[i], t)][1];
	for (i = 0; i < len/2; i++) {
		t = mailid[len-1-i];
		mailid[len-1-i] = mailid[i];
		mailid[i] = t;
	}
	char_srcs[idx] = '\0';
	printf(OBFUS_TEMPLATE, char_srcs, mailid, len, idx);
	
	return 0;
}

