import collections 

s = eval(input())



n = len(s)

m = [0]

mod = 0

ten = 1

for i in s[::-1]:

  mod += (int(i)*ten)%2019

  mod %= 2019

  m.append(mod)

  ten *= 10

  ten %= 2019



count = collections.Counter(m)

print((sum([c*(c-1)//2 for c in list(count.values())])))

  
s = input()[::-1]



counts = [0]*2019 # 剰余の余りの回数を保存

counts[0] = 1 # 0%2019を累積和として含めることを想定



num, d = 0,1 # numは余りの累積和、dはcharの桁数

'''

charに一桁ずつ取り出す。そのmod2019を考え、累積和をとる。

しかし、それぞれの数字には10の累乗がかかっているので、それについては別途dを用意してmod2019をとる

つまり、numは1桁目のmod2019、2桁目のmod2019に1桁目のmod2019を加える

'''

for char in s:

  num += int(char) * d

  num %= 2019

  d *= 10

  d %= 2019

  counts[num] += 1



ans = 0

for c in counts:

  ans += c*(c-1)//2

  

print(ans)
import collections

s = eval(input())
n = len(s)
m = [0]
mod = 0
ten = 1
for i in s[::-1]:
    mod += (int(i) * ten) % 2019
    mod %= 2019
    m.append(mod)
    ten *= 10
    ten %= 2019
count = collections.Counter(m)
print((sum([c * (c - 1) // 2 for c in list(count.values())])))

s = input()[::-1]
counts = [0] * 2019  # 剰余の余りの回数を保存
counts[0] = 1  # 0%2019を累積和として含めることを想定
num, d = 0, 1  # numは余りの累積和、dはcharの桁数
"""
charに一桁ずつ取り出す。そのmod2019を考え、累積和をとる。
しかし、それぞれの数字には10の累乗がかかっているので、それについては別途dを用意してmod2019をとる
つまり、numは1桁目のmod2019、2桁目のmod2019に1桁目のmod2019を加える
"""
for char in s:
    num += int(char) * d
    num %= 2019
    d *= 10
    d %= 2019
    counts[num] += 1
ans = 0
for c in counts:
    ans += c * (c - 1) // 2
print(ans)

-import collections - -s = eval(input()) -n = len(s) -m = [0] -mod = 0 -ten = 1 -for i in s[::-1]: -    mod += (int(i) * ten) % 2019 -    mod %= 2019 -    m.append(mod) -    ten *= 10 -    ten %= 2019 -count = collections.Counter(m) -print((sum([c * (c - 1) // 2 for c in list(count.values())]))) +s = input()[::-1] +counts = [0] * 2019  # 剰余の余りの回数を保存 +counts[0] = 1  # 0%2019を累積和として含めることを想定 +num, d = 0, 1  # numは余りの累積和、dはcharの桁数 +""" +charに一桁ずつ取り出す。そのmod2019を考え、累積和をとる。 +しかし、それぞれの数字には10の累乗がかかっているので、それについては別途dを用意してmod2019をとる +つまり、numは1桁目のmod2019、2桁目のmod2019に1桁目のmod2019を加える +""" +for char in s: +    num += int(char) * d +    num %= 2019 +    d *= 10 +    d %= 2019 +    counts[num] += 1 +ans = 0 +for c in counts: +    ans += c * (c - 1) // 2 +print(ans)