Problem:
Score : 200 points

Problem Statement

A string S of an odd length is said to be a strong palindrome if and only if all of the following conditions are satisfied:

S is a palindrome.

Let N be the length of S. The string formed by the 1-st through ((N-1)/2)-th characters of S is a palindrome.

The string consisting of the (N+3)/2-st through N-th characters of S is a palindrome.

Determine whether S is a strong palindrome.

Constraints

S consists of lowercase English letters.

The length of S is an odd number between 3 and 99 (inclusive).

Input

Input is given from Standard Input in the following format:

S

Output

If S is a strong palindrome, print Yes;
otherwise, print No.

Sample Input 1

akasaka

Sample Output 1

Yes

S is akasaka.

The string formed by the 1-st through the 3-rd characters is aka.

The string formed by the 5-th through the 7-th characters is aka.
All of these are palindromes, so S is a strong palindrome.

Sample Input 2

level

Sample Output 2

No

Sample Input 3

atcoder

Sample Output 3

No

Solution in Java8 (OpenJDK 1.8.0) (judge verdict: Accepted)


import java.util.*;
 
public class Main {
	public static void main (String[] args) {
		Scanner in = new Scanner(System.in);
		
		String s = in.next();
		int s_nam = s.length();
		int s_center = (s_nam-1)/2;
		char[] s_chars = s.toCharArray();
		int flag1 = 0;
		int flag2 = 0;
		int flag3 = 0;
        
        
        flag1 = gcd(0,s_nam-1,s_chars);
        flag2 = gcd(0,s_center-1,s_chars);
        flag3 =  gcd(s_center+1,s_nam-1,s_chars);

        
       if(flag1+flag2+flag3 == 0){System.out.println("Yes");}
        else{System.out.println("No");}
	}
      
      
	static int gcd(int a, int b, char[] kaibun) {
 
	    int reza = 0;
	    
        for(int i = a;i<=b; i++){
            if(kaibun[i] != kaibun[b-i] ){
                reza = 1;
            }
        }
        return reza;
	}
	
    
}