
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;
	}
	
    
}
	 import java.util.*; util.* java 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;
	}
	
    
} 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");}
	} main {
		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");}
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) String s = in.next(); s in.next() in.next in int s_nam = s.length(); s_nam s.length() s.length s int s_center = (s_nam-1)/2; s_center (s_nam-1)/2 (s_nam-1) s_nam 1 2 char[] s_chars = s.toCharArray(); s_chars s.toCharArray() s.toCharArray s int flag1 = 0; flag1 0 int flag2 = 0; flag2 0 int flag3 = 0; flag3 0 flag1 = gcd(0,s_nam-1,s_chars) flag1 gcd(0,s_nam-1,s_chars) gcd 0 s_nam-1 s_nam 1 s_chars flag2 = gcd(0,s_center-1,s_chars) flag2 gcd(0,s_center-1,s_chars) gcd 0 s_center-1 s_center 1 s_chars flag3 =  gcd(s_center+1,s_nam-1,s_chars) flag3 gcd(s_center+1,s_nam-1,s_chars) gcd s_center+1 s_center 1 s_nam-1 s_nam 1 s_chars if(flag1+flag2+flag3 == 0){System.out.println("Yes");}
        else{System.out.println("No");} flag1+flag2+flag3 == 0 flag1+flag2+flag3 flag1+flag2+flag3 flag1 flag2 flag3 0 {System.out.println("Yes");} System.out.println("Yes") System.out.println System.out System System.out "Yes" {System.out.println("No");} System.out.println("No") System.out.println System.out System System.out "No" String[] args args 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;
	} gcd {
 
	    int reza = 0;
	    
        for(int i = a;i<=b; i++){
            if(kaibun[i] != kaibun[b-i] ){
                reza = 1;
            }
        }
        return reza;
	} int reza = 0; reza 0 for(int i = a;i<=b; i++){
            if(kaibun[i] != kaibun[b-i] ){
                reza = 1;
            }
        } int i = a; int i = a; i a i<=b i b i++ i++ i {
            if(kaibun[i] != kaibun[b-i] ){
                reza = 1;
            }
        } {
            if(kaibun[i] != kaibun[b-i] ){
                reza = 1;
            }
        } if(kaibun[i] != kaibun[b-i] ){
                reza = 1;
            } kaibun[i] != kaibun[b-i] kaibun[i] kaibun i kaibun[b-i] kaibun b-i b i {
                reza = 1;
            } reza = 1 reza 1 return reza; reza int a a int b b char[] kaibun kaibun 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;
	}
	
    
} 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;
	}
	
    
} Main

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;
	}
	
    
}
	