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

int main(){
	int i, Slen, ans=0;
	int digit = 1;//10^nに当たる部分。適宜mod2019して用いる
	char S[200001];//文字列として数字を確保
	int T[200001];//n桁目までのmod2019の値を保存
	int R[2019] = {0};//累積和のmod2019の値それぞれの個数をカウント

	scanf("%s", S);
	Slen = strlen(S);

	T[Slen] = 0;//総和ゼロのとき（DPの初期化）
	R[0]++;//総和ゼロのときの分(mod2019=0)を先にカウントしておく

	for(i=Slen-1; i>=0; i--){
		T[i] = (T[i+1] + digit * (S[i]- '0')) % 2019;
		R[T[i]]++;
		digit = digit *10 %2019;
	}

	for(i=0; i<2019; i++){
		ans += ((R[i])*(R[i] - 1)) / 2;//nC2
	}

	printf("%d", ans);
	return 0;
}
