//
// main.cpp
// newcoder
//
// Created by 吴珝君 on 2019/5/5.
// Copyright © 2019年 闲着也是贤者. All rights reserved.
//
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
/*
题目描述
给定一个字符串,问是否能通过添加一个字母将其变为回文串。
输入描述:
一行一个由小写字母构成的字符串,字符串长度小于等于10。
输出描述:
输出答案(YES\NO).
*/
/*
1、小于等于两个字符的字符串一定可以改造成回文串
2、回文串的第一个字母和最后一个字母一定相同。如果这两个字符相同,
则判断剩余的字符,同样可以分成两种情况,加首部还是尾部字符。分为两种情况考虑就OK了
*/
bool isTrue(string s)
{
if (s.length() <=2){
return true;
}
string sm = s ;
reverse(s.begin(), s.end());
if (s == sm){
return true;
}
for (int i = 0; i < s.length()/2; i++)
{
if (s[i] == s[s.length() -1 - i]) {
continue;
}
else
{
string s1 = s.substr(i) + s[i];
string s2= s[s.length() -1 - i] +s.substr(i);
string s1c = s1;
string s2c = s2;
reverse(s1.begin(), s1.end());
reverse(s2.begin(), s2.end());
if (s1 == s1c || s2 == s2c){
return true;
}
else
{
return false;
}
}
}
return true;
}
int main(int argc, const char * argv[]) {
string s;
while (getline(cin, s)) {
if(isTrue(s))
cout <<"YES"<<endl;
else
cout <<"NO"<<endl;
}
}