import java.util.*;
import java.io.PrintWriter;
public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		StringBuilder s=new StringBuilder(sc.next());
		int n=s.length();
		if(s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString())){
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		}else{
			System.out.println("No");
		}
	}
} import java.util.*; util.* java import java.io.PrintWriter; PrintWriter java.io public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		StringBuilder s=new StringBuilder(sc.next());
		int n=s.length();
		if(s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString())){
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		}else{
			System.out.println("No");
		}
	}
} Main public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		StringBuilder s=new StringBuilder(sc.next());
		int n=s.length();
		if(s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString())){
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		}else{
			System.out.println("No");
		}
	} main {
		Scanner sc=new Scanner(System.in);
		StringBuilder s=new StringBuilder(sc.next());
		int n=s.length();
		if(s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString())){
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		}else{
			System.out.println("No");
		}
	} Scanner sc=new Scanner(System.in); sc new Scanner(System.in) StringBuilder s=new StringBuilder(sc.next()); s new StringBuilder(sc.next()) int n=s.length(); n s.length() s.length s if(s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString())){
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		}else{
			System.out.println("No");
		} s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString()) s.substring(0,n/2).equals s.substring(0,n/2) s.substring s 0 n/2 n 2 (new StringBuilder(s.substring((n+1)/2,n))).reverse().toString() (new StringBuilder(s.substring((n+1)/2,n))).reverse().toString (new StringBuilder(s.substring((n+1)/2,n))).reverse() (new StringBuilder(s.substring((n+1)/2,n))).reverse (new StringBuilder(s.substring((n+1)/2,n))) {
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		} if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			} s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString()) s.substring(0,(n-1)/4).equals s.substring(0,(n-1)/4) s.substring s 0 (n-1)/4 (n-1) n 1 4 (new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString() (new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString (new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse() (new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse (new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))) {
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			} if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			} s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString()) s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1) s.substring s (n+3)/2-1 (n+3)/2 (n+3) n 3 2 1 (1+n-(n+3)/2)/2+(n+3)/2-1 (1+n-(n+3)/2)/2+(n+3)/2 (1+n-(n+3)/2)/2 (1+n-(n+3)/2) 1+n 1 n (n+3)/2 (n+3) n 3 2 2 (n+3)/2 (n+3) n 3 2 1 (new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString() (new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString (new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse() (new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse (new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))) {
				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" {
				System.out.println("No");
			} System.out.println("No") System.out.println System.out System System.out "No" {
			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 void main(String[] args){
		Scanner sc=new Scanner(System.in);
		StringBuilder s=new StringBuilder(sc.next());
		int n=s.length();
		if(s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString())){
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		}else{
			System.out.println("No");
		}
	}
} public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		StringBuilder s=new StringBuilder(sc.next());
		int n=s.length();
		if(s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString())){
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		}else{
			System.out.println("No");
		}
	}
} Main
import java.util.*;
import java.io.PrintWriter;
public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		StringBuilder s=new StringBuilder(sc.next());
		int n=s.length();
		if(s.substring(0,n/2).equals((new StringBuilder(s.substring((n+1)/2,n))).reverse().toString())){
			if(s.substring(0,(n-1)/4).equals((new StringBuilder(s.substring(((n-1)/2+1)/2,(n-1)/2))).reverse().toString())){
			if(s.substring((n+3)/2-1,(1+n-(n+3)/2)/2+(n+3)/2-1).equals((new StringBuilder(s.substring((2+n-(n+3)/2)/2+(n+3)/2-1,n))).reverse().toString())){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
			}else{
				System.out.println("No");
			}
		}else{
			System.out.println("No");
		}
	}
}
