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# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Numerics;




namespace contest
{

    class contest
    {


        static void Main(string[] args)
        {


      


            string s = Console.ReadLine();

            var cp = s.Reverse().ToArray();

            bool ok = true;
            for(int i =0; i<s.Length; i++)
            {
                if(!check(cp[i], s[i]))
                {
                    ok = false;
                    break;
                }
            }

            if (ok) Console.WriteLine("Yes");
            else Console.WriteLine("No");



        }

		public static bool check(char a, char b)
        {
            if (a == 'b' && b == 'd') return true;
            if (a == 'd' && b == 'b') return true;
            if (a == 'p' && b == 'q') return true;
            if (a == 'q' && b == 'p') return true;
            
            return false;
        }
        

    }


   

    
}