1. 程式人生 > >L - Mike and palindrome

L - Mike and palindrome

Mike has a string s consisting of only lowercase English letters. He wants to change exactly one character from the string so that the resulting one is a palindrome.

A palindrome is a string that reads the same backward as forward, for example strings "z", "aaa", "aba", "abccba" are palindromes, but strings "codeforces", "reality", "ab" are not.

Input

The first and single line contains string s (1 ≤ |s| ≤ 15).

Output

Print "YES" (without quotes) if Mike can change exactly one character so that the resulting string is palindrome or "NO" (without quotes) otherwise. 

Examples
Input

abccaa

Output

YES

Input

abbcca

Output

NO

Input

abcda

Output

YES

需要注意本身就是迴文串的兩種特殊情況,abcba和abccba;
第一種情況的時候修改c可以使字串保持迴文,第二種情況不能修改,
輸出NO

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
	char s[20];
	scanf("%s",s);
	int n=strlen(s);
	int num=0;
	for( int i=0;i<n/2;i++)
	{
		if(s[i]!=s[n-i-1])
		{
			num++;
		}
	}
	if(n%2==0)
	{
		if(num==1)
		{
			printf("YES");
		}
		else
		{
			printf("NO");
		}
	}
	else
	{
		if(num<=1)
		{
			printf("YES");
		}
		else
		{
			printf("NO");
		}
	}
	return 0;
}