Problem:
Score : 100 points

Problem Statement

You are given a 4-character string S consisting of uppercase English letters.
Determine if S consists of exactly two kinds of characters which both appear twice in S.

Constraints

The length of S is 4.

S consists of uppercase English letters.

Input

Input is given from Standard Input in the following format:

S

Output

If S consists of exactly two kinds of characters which both appear twice in S, print Yes; otherwise, print No.

Sample Input 1

ASSA

Sample Output 1

Yes

S consists of A and S which both appear twice in S.

Sample Input 2

STOP

Sample Output 2

No

Sample Input 3

FFEE

Sample Output 3

Yes

Sample Input 4

FREE

Sample Output 4

No

Solution in C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<stdio.h>

unsigned length(char text[])
{
  unsigned len = 0;

  while(text[len])
    len++;
  return(len);
}

void count(char str[])
{
  int cnt[26] = {0};
  int i = 0;
  int j = 0;
  int num = 0;  //2回出現した文字数


  while(i<=26){
    if(str[i]>='A' && str[i]<='Z' && ++cnt[str[i]-'A'] == 2){
        j++;
    }
    i++;
  }

  if(j==2)
    puts("YES");
  else
    puts("NO");
}

int main(void)
{

  char text1[4];
  char text2;
  int flag1=0;
  int flag2=0;

  while(1)
  {
    scanf("%s",text1);
    if(length(text1) != 4)
    {
      puts("4 letters");
    }
    else
      break;
  }

  count(text1);

  return(0);
}