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 Ruby (2.3.3) (judge verdict: Runtime Error)

n,k = gets.split.map(&:to_i)
mod = 10**9+7

dp = Array.new(n).map{Array.new(k,1)}

n.times { |s| dp[s][0] = s+1 }

n.times do |s|
  k.times do |t|
    if s>0 && t>0 && s>t
      dp[s][t] = dp[s-1][t] + dp[s-1][t-1]
    end
  end
end

k.times do |i|
  if i == 0
    puts (dp[n-k][i]) % mod
  else
  	puts (dp[n-k][i]*dp[k-2][i-1]) % mod
  end
end