#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define mod 2019

int ctoi(char a)
{
  switch(a){
    case '0': return 0;
    case '1': return 1;
    case '2': return 2;
    case '3': return 3;
    case '4': return 4;
    case '5': return 5;
    case '6': return 6;
    case '7': return 7;
    case '8': return 8;
    case '9': return 9;
  }
}
 
int main(void)
{
  char s[200001];
  int a[200001];
  long i,j,k;
  long int cnt=0;
  long int temp;
  long int sum=0;
  long int count=0;
  scanf("%s",s);

  for(i=0;s[i]!='\0';i++)
  {
    a[i+1]=ctoi(s[i]);
    cnt++;
  }

    for(i=1;i<=cnt-3;i++)
  {
    for(j=i+3;j<=cnt;j++)
    {
      temp = i;
      for(k=0;k<j-i+1;k++)
      {
        sum = sum + pow(10,j-temp)*a[temp];
        temp++;
      }
      if (sum%mod == 0)
      {
        count++;

      }
      sum=0;
    }
  }
  printf("%ld",count);

return 0;
}
