#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

int ctoi(char c)
{
  switch(c)
  {
    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;
    default : return 0;
  }
}

int modpow(int p, int q, int mod)
{
  int i;
  int r=1;
  while(q>0)
  {
    if(q%2>0) r=r*p%mod;
    p=p*p%mod;
    q/=2;
  }
  return r;
}

int main(void)
{
  char S[200000];
  int i,j,len,sum=0;
  int s[200000]={};
  int t[200001]={0};
  int u[2019]={1};
  int mod=2019;

  scanf("%s",S);

  j=0;
  for(i=strlen(S)-1;i>=0;i--)
  {
    s[j]=ctoi(S[i]);
    j++;
  }

  for(i=1;i<=strlen(S);i++)
  {
    t[i]=(t[i-1]+s[i-1]*modpow(10,i-1,mod))%mod;
    u[t[i]]++;
  }

  for(i=0;i<2019;i++)
  {
    if(u[i]==0) continue;
    sum+=u[i]*(u[i]-1)/2;
  }

  printf("%d\n",sum);

  return 0;
}