import std.stdio,std.string,std.array,std.algorithm,std.range,std.conv;

int main(){
    auto s=readln.chomp;
    auto n=s.length;
    if(s==s.rev){
        auto s1=s.dup[0..(n-1)/2];
        if(s1==s1.rev){
            auto s2=s.dup[(n+3)/2-1..$];
            if(s2==s2.rev){
                "Yes".writeln;
                return 0;
            }
        }
    }   
    "No".writeln;
    return 0;
}

auto rev(const char[] s){ 
    auto ss=s.dup;
    foreach(i;0..ss.length/2){
        ss[i]=ss[$-i-1];
    }   
    return ss; 
}