import java.util.*;
public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    String s = sc.next();
    boolean flag=true;
    for(int i=0;i<s.length()/2;i++){
      if(s.charAt(i)!=s.charAt(s.length()-1-i)){
        flag = false;
        break;
      }
    }
    if(flag==true){
      for(int i=0;i<(s.length()-1)/4;i++){
      	if(s.charAt(i)!=s.charAt(s.length()/2-1-i)){
       	 flag = false;
         break;
     	 }
      }
    }
    int n=s.length();
    if(flag==true){
      for(int i=0;i<(n-(n+3)/2)/2;i++){
      	if(s.charAt(i+(n+3)/2-1)!=s.charAt(n-1-i)){
       	 flag = false;
         break;
     	 }
      }
    }
    if(flag == true) System.out.println("Yes");
    else System.out.println("No");
  }
}
/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz