Problem:
Score : 100 points

Problem Statement

You are given a string S consisting of letters b, d, p and q.
Determine whether S is a mirror string.

Here, a mirror string is a string S such that the following sequence of operations on S results in the same string S:

Reverse the order of the characters in S.

Replace each occurrence of b by d, d by b, p by q, and q by p, simultaneously.

Constraints

1 \leq |S| \leq 10^5

S consists of letters b, d, p, and q.

Input

The input is given from Standard Input in the following format:

S

Output

If S is a mirror string, print Yes. Otherwise, print No.

Sample Input 1

pdbq

Sample Output 1

Yes

Sample Input 2

ppqb

Sample Output 2

No

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>                                                                 
using namespace std;                                                             
string a,b;                    
int main(){                                                                            
	cin>>a;
	b=a;
	reverse(a.begin(),a.end());
	for(int i=0;i<a.size();++i){
        if(a[i]=='b') a[i]='d';                                                                               
        else if(a[i]=='d') a[i]='b';
        else if(a[i]=='p') a[i]='q';
        else  a[i]='p';
    }                                                   
    if(a==b) cout<<"Yes"<<endl;
    else cout<<"No"<<endl;                    
	return 0;
}