let m = 2019
let ( +^ ) x y = (x + y) mod m
let ( *^ ) x y = (x * y) mod m
let inv10 = 202
let rec power ( * ) e m n =
  if n <= 0 then e
  else power ( * ) (if n land 1 = 0 then e else m * e) (m * m) (n lsr 1)

let () =
  let s = read_line () in
  let n = String.length s in
  let acc = Array.make (n + 1) 0 in
  for i = 0 to n - 1 do
    acc.(i + 1) <- 10 *^ acc.(i) +^ (Char.code s.[i] - Char.code '0')
  done;
  let a = Array.make 2019 0 in
  Array.iteri (fun i n ->
    let j = power ( *^ ) n inv10 i in
    a.(j) <- 1 + a.(j)) acc;
  Printf.printf "%d\n" @@
  Array.fold_right (fun a -> ( + ) @@ a * (a - 1) / 2) a 0


