#include<iostream>
#include<math.h>
#include<iomanip>
#include<string.h>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
char dg2[26]= {'A',' ',' ',' ','3',' ',' ','H','I','L',' ','J','M',' ','O',' ',' ',' ','2','T','U','V','W','X','Y','5'};
char dh2[9]= {'1','S','E',' ','Z',' ',' ','8',' '};
bool huiwen(char x[])
{
int j,i=0;
j=strlen(x)-1;
while(i!=j&&i<j)
{
if(x[i]!=x[j]) return false;
i++;
j--;
}
return true;
}
bool jx(char y[])
{
int j,i=0;
j=strlen(y)-1;
string p;
string q;
while(i!=j&&i<j)
{
if(y[i]>='A'&&y[i]<='Z')
{
if(y[j]>='A'&&y[j]<='Z')
{
p[i]=dg2[y[i]-'A'];
q[j]=dg2[y[j]-'A'];
if(p[i]!=y[j]) return false;
if(q[j]!=y[i]) return false;
}
else
{
p[i]=dg2[y[i]-'A'];
q[j]=dh2[y[j]-'0'-1];
if(p[i]!=y[j]) return false;
if(q[j]!=y[i]) return false;
}
}
else
{
if(y[j]>='A'&&y[j]<='Z')
{
p[i]=dh2[y[i]-'0'-1];
q[j]=dg2[y[j]-'A'];
if(p[i]!=y[j]) return false;
if(q[j]!=y[i]) return false;
}
else
{
p[i]=dh2[y[i]-'0'-1];
q[j]=dh2[y[j]-'0'-1];
if(p[i]!=y[j]) return false;
if(q[j]!=y[i]) return false;
}
}
i++;
j--;
}
return true;
}
char s[10010];
int main()
{
bool a,b;
while(1)
{
cin>>s;
a=huiwen(s);
b=jx(s);
if(a&&b)
{
cout<<s<<" -- is a mirrored palindrome."<<endl;
}
else if(a&&!b)
{
cout<<s<<" -- is a regular palindrome."<<endl;
}
else if(!a&&b)
{
cout<<s<<" -- is a mirrored string."<<endl;
}
else if(!a&&!b)
{
cout<<s<<" -- is not a palindrome."<<endl;
}
cout<<endl;
}
return 0;
}
求大佬指教