(* O(n) *)
let rec fold_btw f a i n = if i >= n then a else fold_btw f (f a i) (i + 1) n
let fold_int f a n = fold_btw f a 0 n

(* O(|s|) *)
let string_to_char_array s = Array.init (String.length s) (fun i -> s.[i])
let string_to_chars s = Array.to_list (string_to_char_array s)

(* O(1) *)
let is_acgt_char = function
| 'A' | 'C' | 'G' | 'T' -> true
| _ -> false

(* O(|s|) *)
let is_acgt_string s = List.for_all is_acgt_char (string_to_chars s)

(* O(|s|^3) *)
let solve s =
  let n = String.length s in
  fold_int
    (fun acc_i i ->
      fold_btw
        (fun acc_j j ->
          let len = j - i in
          if is_acgt_string (String.sub s i len) then
            max acc_j len
          else
            acc_j)
        acc_i
        (i + 1)
        (n + 1))
    0
    n

let _ = read_line () |> solve |> string_of_int |> print_endline