import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = getString(sc);

		String[] sArr = s.split("");
		Arrays.sort(sArr);
		if (sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2])) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

} import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = getString(sc);

		String[] sArr = s.split("");
		Arrays.sort(sArr);
		if (sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2])) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = getString(sc);

		String[] sArr = s.split("");
		Arrays.sort(sArr);
		if (sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2])) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	} main {
		Scanner sc = new Scanner(System.in);
		String s = getString(sc);

		String[] sArr = s.split("");
		Arrays.sort(sArr);
		if (sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2])) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String s = getString(sc); s getString(sc) getString sc String[] sArr = s.split(""); sArr s.split("") s.split s "" Arrays.sort(sArr) Arrays.sort Arrays sArr if (sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2])) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		} sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2]) sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2]) sArr[0].equals(sArr[1]) sArr[0].equals sArr[0] sArr 0 sArr[1] sArr 1 sArr[2].equals(sArr[3]) sArr[2].equals sArr[2] sArr 2 sArr[3] sArr 3 !sArr[1].equals(sArr[2]) sArr[1].equals(sArr[2]) sArr[1].equals sArr[1] sArr 1 sArr[2] sArr 2 {
			System.out.println("Yes");
		} System.out.println("Yes") System.out.println System.out System System.out "Yes" {
			System.out.println("No");
		} System.out.println("No") System.out.println System.out System System.out "No" String[] args args /**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	} getLong {

		return Long.parseLong(sc.next());
	} return Long.parseLong(sc.next()); Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc Scanner sc sc /**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	} getInt {

		return Integer.parseInt(sc.next());
	} return Integer.parseInt(sc.next()); Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc Scanner sc sc /**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	} getString {

		return sc.next();
	} return sc.next(); sc.next() sc.next sc Scanner sc sc public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = getString(sc);

		String[] sArr = s.split("");
		Arrays.sort(sArr);
		if (sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2])) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

} public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = getString(sc);

		String[] sArr = s.split("");
		Arrays.sort(sArr);
		if (sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2])) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

} Main
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = getString(sc);

		String[] sArr = s.split("");
		Arrays.sort(sArr);
		if (sArr[0].equals(sArr[1]) && sArr[2].equals(sArr[3]) && !sArr[1].equals(sArr[2])) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

}
