#include <bits/stdc++.h>
bool is_reversable(const std::string& str) {
  bool even = 0 != (str.length() & 1);
  {
    for (size_t i = 0; i < str.length() / 2; ++i) {
      if (str[i] != str[str.length() - 1 - i]) return false;
    }
    return true;
  }
}
int main() {
  std::string base_str;
  std::cin >> base_str;
  if (is_reversable(base_str)) {
    auto before = base_str.substr(0, base_str.length() / 2);
    auto after = base_str.substr(((base_str.length() + 3) / 2) - 1,
                                 base_str.length() / 2);
    if (is_reversable(before)) {
      if (is_reversable(after)) {
        std::cout << "Yes" << std::endl;
        return 0;
      }
    }
  }
  std::cout << "No" << std::endl;
  return 0;
}
