#include #include #define NPAL " -- is not a palindrome." #define PAL " -- is a regular palindrome." #define MIR " -- is a mirrored string." #define MIRPAL " -- is a mirrored palindrome." char revs[128]; char inpt[30]; void init() { for(int i=0; i<128; i++) revs[i] = '\0'; revs['A'] = 'A'; revs['E'] = '3'; revs['H'] = 'H'; revs['I'] = 'I'; revs['J'] = 'L'; revs['L'] = 'J'; revs['M'] = 'M'; revs['O'] = 'O'; revs['S'] = '2'; revs['T'] = 'T'; revs['U'] = 'U'; revs['V'] = 'V'; revs['W'] = 'W'; revs['X'] = 'X'; revs['Y'] = 'Y'; revs['Z'] = '5'; revs['1'] = '1'; revs['2'] = 'S'; revs['3'] = 'E'; revs['5'] = 'Z'; revs['8'] = '8'; } bool is_pal(char* str) { int l = strlen(str)-1, r=0; while(l>=0) if (str[l--] != str[r++]) return false; return true; } bool is_mir(char* str) { int l = strlen(str)-1, r=0; while(l>=0) if (revs[str[l--]] != str[r++]) return false; return true; } int main() { init(); while(scanf("%s\n",inpt) != EOF) { bool pal = is_pal(inpt), mir = is_mir(inpt); if (pal && mir) { printf("%s%s\n",inpt,MIRPAL); continue; } if (pal) { printf("%s%s\n",inpt,PAL); continue; } if (mir) { printf("%s%s\n",inpt,MIR); continue; } printf("%s%s\n",inpt,NPAL); } return 0; }