Problem:
Score : 200 points

Problem Statement

You are given a string S. Each character of S is uppercase or lowercase English letter.
Determine if S satisfies all of the following conditions:

The initial character of S is an uppercase A.

There is exactly one occurrence of C between the third character from the beginning and the second to last character (inclusive).

All letters except the A and C mentioned above are lowercase.

Constraints

4 ≤ |S| ≤ 10 (|S| is the length of the string S.)

Each character of S is uppercase or lowercase English letter.

Input

Input is given from Standard Input in the following format:

S

Output

If S satisfies all of the conditions in the problem statement, print AC; otherwise, print WA.

Sample Input 1

AtCoder

Sample Output 1

AC

The first letter is A, the third letter is C and the remaining letters are all lowercase, so all the conditions are satisfied.

Sample Input 2

ACoder

Sample Output 2

WA

The second letter should not be C.

Sample Input 3

AcycliC

Sample Output 3

WA

The last letter should not be C, either.

Sample Input 4

AtCoCo

Sample Output 4

WA

There should not be two or more occurrences of C.

Sample Input 5

Atcoder

Sample Output 5

WA

The number of C should not be zero, either.

Solution in OCaml (4.02.3) (judge verdict: Wrong Answer)

type at = A | C | N | E;;

let is_lowercase = function
  | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h'
  | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p'
  | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x'
  | 'y' | 'z' -> true
  | _ -> false;;

let on string index =
  if String.length string == index + 1 then E
  else if index == 0 then A
  else if index >= 2 && ((String.length string) - index) >= 2 then C
  else N

let valid string =
  let rec validate string index c_state =
    match (on string index, string.[index], c_state) with
    | (E, _, true) -> "AC"
    | (A, 'A', _) -> validate string (index + 1) c_state
    | (C, 'C', false) -> validate string (index + 1) true
    | (C, c, true) when c != 'C' -> validate string (index + 1) true
    | (N, 'C', _) -> "WA"
    | (N, c, _) when is_lowercase c -> validate string (index + 1) c_state
    | (_, _, _) -> "WA"
  in validate string 0 false;;

read_line() |> valid |> print_endline