uses crt;
var s,n:string;
d:array[0..1000] of string;
i,j,t,ii,k:integer;
begin
clrscr;
readln(n);
for i:=1 to length(n) do
t:=t+ord(n[i])-48;
if t mod 3=0 then
begin
inc(k);
d[k]:=n;
end;
for i:=1 to length(n)-1 do
begin
for j:=1 to length(n)-i+1 do
begin
s:=n;t:=0;
delete(s,j,i);
while (s[1]='0') and (length(s)<>0) do delete(s,1,1);
for ii:=1 to length(s) do
t:=t+ord(s[ii])-48;
if length(s)<>0 then
if t mod 3=0 then
begin
inc(k);
d[k]:=s;
end;
end;
end;
writeln(k);
readkey;
end.