import java.util.Scanner;

public class Main {
    
    public static boolean isStringPalindrome(String s, int a, int b){
        StringBuilder reverse = new StringBuilder();
        for(int i = b-1; i >= a; i--){
            reverse.append(s.charAt(i));
        }
        return s.contentEquals(reverse);
    }

    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int length = s.length();
        int length1 = (length - 1)/2;
        String s1 = s.substring(0,length1);
        
        if(s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1)){
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

    }
} import java.util.Scanner; Scanner java.util public class Main {
    
    public static boolean isStringPalindrome(String s, int a, int b){
        StringBuilder reverse = new StringBuilder();
        for(int i = b-1; i >= a; i--){
            reverse.append(s.charAt(i));
        }
        return s.contentEquals(reverse);
    }

    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int length = s.length();
        int length1 = (length - 1)/2;
        String s1 = s.substring(0,length1);
        
        if(s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1)){
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

    }
} Main public static boolean isStringPalindrome(String s, int a, int b){
        StringBuilder reverse = new StringBuilder();
        for(int i = b-1; i >= a; i--){
            reverse.append(s.charAt(i));
        }
        return s.contentEquals(reverse);
    } isStringPalindrome {
        StringBuilder reverse = new StringBuilder();
        for(int i = b-1; i >= a; i--){
            reverse.append(s.charAt(i));
        }
        return s.contentEquals(reverse);
    } StringBuilder reverse = new StringBuilder(); reverse new StringBuilder() for(int i = b-1; i >= a; i--){
            reverse.append(s.charAt(i));
        } int i = b-1; int i = b-1; i b-1 b 1 i >= a i a i-- i-- i {
            reverse.append(s.charAt(i));
        } {
            reverse.append(s.charAt(i));
        } reverse.append(s.charAt(i)) reverse.append reverse s.charAt(i) s.charAt s i return s.contentEquals(reverse); s.contentEquals(reverse) s.contentEquals s reverse String s s int a a int b b public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int length = s.length();
        int length1 = (length - 1)/2;
        String s1 = s.substring(0,length1);
        
        if(s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1)){
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

    } main {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int length = s.length();
        int length1 = (length - 1)/2;
        String s1 = s.substring(0,length1);
        
        if(s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1)){
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String s = sc.next(); s sc.next() sc.next sc int length = s.length(); length s.length() s.length s int length1 = (length - 1)/2; length1 (length - 1)/2 (length - 1) length 1 2 String s1 = s.substring(0,length1); s1 s.substring(0,length1) s.substring s 0 length1 if(s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1)){
            System.out.println("Yes");
        } else {
            System.out.println("No");
        } s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1) s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1) s.length() % 2 != 0 s.length() % 2 s.length() s.length s 2 0 isStringPalindrome(s,0,length) isStringPalindrome s 0 length isStringPalindrome(s1,0,length1) isStringPalindrome s1 0 length1 {
            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 public class Main {
    
    public static boolean isStringPalindrome(String s, int a, int b){
        StringBuilder reverse = new StringBuilder();
        for(int i = b-1; i >= a; i--){
            reverse.append(s.charAt(i));
        }
        return s.contentEquals(reverse);
    }

    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int length = s.length();
        int length1 = (length - 1)/2;
        String s1 = s.substring(0,length1);
        
        if(s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1)){
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

    }
} public class Main {
    
    public static boolean isStringPalindrome(String s, int a, int b){
        StringBuilder reverse = new StringBuilder();
        for(int i = b-1; i >= a; i--){
            reverse.append(s.charAt(i));
        }
        return s.contentEquals(reverse);
    }

    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int length = s.length();
        int length1 = (length - 1)/2;
        String s1 = s.substring(0,length1);
        
        if(s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1)){
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

    }
} Main
import java.util.Scanner;

public class Main {
    
    public static boolean isStringPalindrome(String s, int a, int b){
        StringBuilder reverse = new StringBuilder();
        for(int i = b-1; i >= a; i--){
            reverse.append(s.charAt(i));
        }
        return s.contentEquals(reverse);
    }

    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int length = s.length();
        int length1 = (length - 1)/2;
        String s1 = s.substring(0,length1);
        
        if(s.length() % 2 != 0 && isStringPalindrome(s,0,length) && isStringPalindrome(s1,0,length1)){
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

    }
}
