import java.io.*;
import java.util.*;

public class pal_pk_n3 {

	boolean check(String s, int a, int b) {
		char[] t = s.toCharArray();
		char tmp = t[a];
		t[a] = t[b];
		t[b] = tmp;
		for (int i = 0; i < t.length; i++) {
			if (t[i] != t[t.length - 1 - i])
				return false;
		}
		return true;
	}

	void solve() throws IOException {
		String s = nextToken();
		for (int i = 0; i < s.length(); i++) {
			for (int j = i + 1; j < s.length(); j++) {
				if (check(s, i, j)) {
					out.println("Yes");
					return;
				}
			}
		}
		out.println("No");
	}

	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;

	void run() {
		try {
//			br = new BufferedReader(new InputStreamReader(System.in));
//			out = new PrintWriter(System.out);

			br = new BufferedReader(new FileReader(new File("pal.in")));
			out = new PrintWriter("pal.out");
			solve();

			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new pal_pk_n3().run();
	}

	String nextToken() throws IOException {
		while ((st == null) || !st.hasMoreTokens())
			st = new StringTokenizer(br.readLine());
		return st.nextToken();
	}

	int nextInt() throws NumberFormatException, IOException {
		return Integer.parseInt(nextToken());
	}

	double nextDouble() throws NumberFormatException, IOException {
		return Double.parseDouble(nextToken());
	}

	long nextLong() throws NumberFormatException, IOException {
		return Long.parseLong(nextToken());
	}
}
