Problem:
Score : 400 points

Problem Statement

Given is a string S consisting of digits from 1 through 9.

Find the number of pairs of integers (i,j) (1 ≤ i ≤ j ≤ |S|) that satisfy the following condition:

Condition: In base ten, the i-th through j-th characters of S form an integer that is a multiple of 2019.

Constraints

1 ≤ |S| ≤ 200000

S is a string consisting of digits from 1 through 9.

Input

Input is given from Standard Input in the following format:

S

Output

Print the number of pairs of integers (i,j) (1 ≤ i ≤ j ≤ |S|) that satisfy the condition.

Sample Input 1

1817181712114

Sample Output 1

3

Three pairs - (1,5), (5,9), and (9,13) - satisfy the condition.

Sample Input 2

14282668646

Sample Output 2

2

Sample Input 3

2119

Sample Output 3

0

No pairs satisfy the condition.

Solution in PHP (7.4.4) (judge verdict: Wrong Answer)

<?php
  list($s) = explode(" ", trim(fgets(STDIN)));

  $str4 = [];
  $str5 = [];
  $str6 = [];
  $str7 = [];
  $str8 = [];
  for($i=1; $i<10000; $i++){
    $b2019 = 2019*$i;
    if (preg_match("/0/", $b2019)){
      continue;
    }
    $len = strlen($b2019);
    if($len==4){
      $str4[$b2019] = true;
    }else if($len==5){
      $str5[$b2019] = true;
    }else if($len==6){
      $str6[$b2019] = true;
    }else if($len==7){
      $str7[$b2019] = true;
    }else if($len==8){
      $str8[$b2019] = true;
    }
  }

  $len = strlen($s);
  $ans = 0;
  for($i=0;$i<$len; $i++){
    $substr = substr($s, $i, 4);
    if(isset($str4[$substr])){
      $ans++;
    }
    $substr = substr($s, $i, 5);
    if(isset($str5[$substr])){
      $ans++;
    }
    $substr = substr($s, $i, 6);
    if(isset($str6[$substr])){
      $ans++;
    }
    $substr = substr($s, $i, 7);
    if(isset($str7[$substr])){
      $ans++;
    }
    $substr = substr($s, $i, 8);
    if(isset($str8[$substr])){
      $ans++;
    }
  }
echo $ans;