let m = 2019
let ( +^ ) x y = (x + y) mod m
let ( *^ ) x y = (x * y) mod m
let inv10 = 202

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

