Counting substhreengs
Substrings are strings formed by choosing a subset of contiguous characters from a string. This is well known. A little more obscure is the definition of substhreengs. A substhreeng is a substring which complies to the following additional requirements:
- It is non-empty, and composed entirely of base 10 digits.
- Interpreted in base 10 (allowing extra leading zeros), the resulting integer is a multiple of 3.
For instance, the string “130a303” contains 9 substhreengs: the substhreeng ‘3’ three times, the substhreengs ‘30’ and ‘0’ twice each, and the substhreengs ‘303’ and ‘03’ once each. The substring ‘30a3’ is not a substhreeng because it is not composed entirely of base 10 digits, while the substring ‘13’ is not a substhreeng because 13 is not a multiple of 3.
Notice that two substhreengs are considered different if they are different in length or start at a different position, even if the selected characters are the same.
Given a string, you are asked to count the number of substhreengs it contains.
Input
The input contains several test cases; each test case is formatted as follows. A test case consists of a single line that contains a non-empty string S of at most 106 characters. Each character of S is either a digit or a lowercase letter.
Output
For each test case in the input, output a line with an integer representing the number of substhreengs contained in S.
Sample Input
130a303
0000000000
icpc2014regional
Sample Output
9 55 2