#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ scanf(char *, char *);
int main() {
  char sentence[1000];
  scanf("%[^\n]s", sentence);
  int times = 0;
  for (int counter = 0; sentence[counter] != '\0'; counter++) {
    if (sentence[counter] < 115) {
      if (sentence[counter] == 32)
        times++;
      else {
        if ((sentence[counter] - 97) % 3 == 0)
          times++;
        if ((sentence[counter] - 98) % 3 == 0)
          times += 2;
        if ((sentence[counter] - 99) % 3 == 0)
          times += 3;
      }
    } else {
      if (sentence[counter] == 115 || sentence[counter] == 122)
        times += 4;
      if (sentence[counter] == 116 || sentence[counter] == 119)
        times++;
      if (sentence[counter] == 117 || sentence[counter] == 120)
        times += 2;
      if (sentence[counter] == 118 || sentence[counter] == 121)
        times += 3;
    }
  }
  printf("%d", times);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x400,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x3f0(%rbp),%rsi
lea    0xec0(%rip),%rdi
call   1040 <scanf@plt>
movl   $0x0,-0x3f4(%rbp)
movl   $0x0,-0x3f8(%rbp)
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     136f <main+0x24f>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x73,%eax
jge    1255 <main+0x135>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
jne    11b5 <main+0x95>
mov    -0x3f4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f4(%rbp)
jmp    1250 <main+0x130>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
sub    $0x61,%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    11e7 <main+0xc7>
mov    -0x3f4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f4(%rbp)
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
sub    $0x62,%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1219 <main+0xf9>
mov    -0x3f4(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x3f4(%rbp)
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
sub    $0x63,%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    124b <main+0x12b>
mov    -0x3f4(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x3f4(%rbp)
jmp    1250 <main+0x130>
jmp    1356 <main+0x236>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x73,%eax
je     1285 <main+0x165>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jne    1294 <main+0x174>
mov    -0x3f4(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x3f4(%rbp)
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x74,%eax
je     12c4 <main+0x1a4>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x77,%eax
jne    12d3 <main+0x1b3>
mov    -0x3f4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f4(%rbp)
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x75,%eax
je     1303 <main+0x1e3>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x78,%eax
jne    1312 <main+0x1f2>
mov    -0x3f4(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x3f4(%rbp)
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x76,%eax
je     1342 <main+0x222>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x79,%eax
jne    1351 <main+0x231>
mov    -0x3f4(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x3f4(%rbp)
jmp    1356 <main+0x236>
jmp    135b <main+0x23b>
mov    -0x3f8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f8(%rbp)
jmp    1159 <main+0x39>
mov    -0x3f4(%rbp),%esi
lea    0xc8b(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x400,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x3e8,%rsp
lea    0xed2(%rip),%rdi
mov    %rsp,%rsi
call   1040 <scanf@plt>
mov    (%rsp),%cl
test   %cl,%cl
je     120a <main+0xea>
lea    0x1(%rsp),%rax
xor    %esi,%esi
jmp    1162 <main+0x42>
nopw   0x0(%rax,%rax,1)
add    $0x3,%esi
movzbl (%rax),%ecx
add    $0x1,%rax
test   %cl,%cl
je     120c <main+0xec>
movsbl %cl,%ecx
cmp    $0x72,%cl
jg     1180 <main+0x60>
cmp    $0x20,%cl
jne    11c0 <main+0xa0>
add    $0x1,%esi
jmp    1153 <main+0x33>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    $0x7a,%cl
je     118a <main+0x6a>
cmp    $0x73,%cl
jne    118d <main+0x6d>
add    $0x4,%esi
cmp    $0x77,%cl
je     1197 <main+0x77>
cmp    $0x74,%cl
jne    119a <main+0x7a>
add    $0x1,%esi
cmp    $0x78,%cl
je     11a4 <main+0x84>
cmp    $0x75,%cl
jne    11a7 <main+0x87>
add    $0x2,%esi
cmp    $0x79,%cl
je     1150 <main+0x30>
cmp    $0x76,%cl
je     1150 <main+0x30>
jmp    1153 <main+0x33>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movswl %cx,%ecx
imul   $0xffffaaab,%ecx,%ecx
lea    0x7fdf(%rcx),%edx
movzwl %dx,%edx
cmp    $0x5555,%edx
adc    $0x0,%esi
lea    -0x2acc(%rcx),%edx
movzwl %dx,%edx
lea    0x2(%rsi),%edi
cmp    $0x5555,%edx
cmovae %esi,%edi
add    $0x2a89,%ecx
movzwl %cx,%ecx
lea    0x3(%rdi),%esi
cmp    $0x5555,%ecx
cmovae %edi,%esi
jmp    1153 <main+0x33>
xor    %esi,%esi
lea    0xdf4(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x3e8,%rsp
ret

LLVM IR (-O0):
@.str = [7 x i8] c"%[^\0A]s\00"
@.str.1 = [3 x i8] c"%d\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [1000 x i8]
%3 = alloca i32
%4 = alloca i32
store i32 0, i32* %1
%5 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 0
%6 = call i32 @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i8* %5)
store i32 0, i32* %3
store i32 0, i32* %4
br label %7
7: ; preds = %139, %0
%8 = load i32, i32* %4
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %9
%11 = load i8, i8* %10
%12 = sext i8 %11 to i32
%13 = icmp ne i32 %12, 0
br i1 %13, label %14, label %142
14: ; preds = %7
%15 = load i32, i32* %4
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %16
%18 = load i8, i8* %17
%19 = sext i8 %18 to i32
%20 = icmp slt i32 %19, 115
br i1 %20, label %21, label %69
21: ; preds = %14
%22 = load i32, i32* %4
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %23
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = icmp eq i32 %26, 32
br i1 %27, label %28, label %31
28: ; preds = %21
%29 = load i32, i32* %3
%30 = add nsw i32 %29, 1
store i32 %30, i32* %3
br label %68
31: ; preds = %21
%32 = load i32, i32* %4
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %33
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = sub nsw i32 %36, 97
%38 = srem i32 %37, 3
%39 = icmp eq i32 %38, 0
br i1 %39, label %40, label %43
40: ; preds = %31
%41 = load i32, i32* %3
%42 = add nsw i32 %41, 1
store i32 %42, i32* %3
br label %43
43: ; preds = %40, %31
%44 = load i32, i32* %4
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %45
%47 = load i8, i8* %46
%48 = sext i8 %47 to i32
%49 = sub nsw i32 %48, 98
%50 = srem i32 %49, 3
%51 = icmp eq i32 %50, 0
br i1 %51, label %52, label %55
52: ; preds = %43
%53 = load i32, i32* %3
%54 = add nsw i32 %53, 2
store i32 %54, i32* %3
br label %55
55: ; preds = %52, %43
%56 = load i32, i32* %4
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %57
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = sub nsw i32 %60, 99
%62 = srem i32 %61, 3
%63 = icmp eq i32 %62, 0
br i1 %63, label %64, label %67
64: ; preds = %55
%65 = load i32, i32* %3
%66 = add nsw i32 %65, 3
store i32 %66, i32* %3
br label %67
67: ; preds = %64, %55
br label %68
68: ; preds = %67, %28
br label %138
69: ; preds = %14
%70 = load i32, i32* %4
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %71
%73 = load i8, i8* %72
%74 = sext i8 %73 to i32
%75 = icmp eq i32 %74, 115
br i1 %75, label %83, label %76
76: ; preds = %69
%77 = load i32, i32* %4
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %78
%80 = load i8, i8* %79
%81 = sext i8 %80 to i32
%82 = icmp eq i32 %81, 122
br i1 %82, label %83, label %86
83: ; preds = %76, %69
%84 = load i32, i32* %3
%85 = add nsw i32 %84, 4
store i32 %85, i32* %3
br label %86
86: ; preds = %83, %76
%87 = load i32, i32* %4
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %88
%90 = load i8, i8* %89
%91 = sext i8 %90 to i32
%92 = icmp eq i32 %91, 116
br i1 %92, label %100, label %93
93: ; preds = %86
%94 = load i32, i32* %4
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %95
%97 = load i8, i8* %96
%98 = sext i8 %97 to i32
%99 = icmp eq i32 %98, 119
br i1 %99, label %100, label %103
100: ; preds = %93, %86
%101 = load i32, i32* %3
%102 = add nsw i32 %101, 1
store i32 %102, i32* %3
br label %103
103: ; preds = %100, %93
%104 = load i32, i32* %4
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %105
%107 = load i8, i8* %106
%108 = sext i8 %107 to i32
%109 = icmp eq i32 %108, 117
br i1 %109, label %117, label %110
110: ; preds = %103
%111 = load i32, i32* %4
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %112
%114 = load i8, i8* %113
%115 = sext i8 %114 to i32
%116 = icmp eq i32 %115, 120
br i1 %116, label %117, label %120
117: ; preds = %110, %103
%118 = load i32, i32* %3
%119 = add nsw i32 %118, 2
store i32 %119, i32* %3
br label %120
120: ; preds = %117, %110
%121 = load i32, i32* %4
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %122
%124 = load i8, i8* %123
%125 = sext i8 %124 to i32
%126 = icmp eq i32 %125, 118
br i1 %126, label %134, label %127
127: ; preds = %120
%128 = load i32, i32* %4
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %129
%131 = load i8, i8* %130
%132 = sext i8 %131 to i32
%133 = icmp eq i32 %132, 121
br i1 %133, label %134, label %137
134: ; preds = %127, %120
%135 = load i32, i32* %3
%136 = add nsw i32 %135, 3
store i32 %136, i32* %3
br label %137
137: ; preds = %134, %127
br label %138
138: ; preds = %137, %68
br label %139
139: ; preds = %138
%140 = load i32, i32* %4
%141 = add nsw i32 %140, 1
store i32 %141, i32* %4
br label %7
142: ; preds = %7
%143 = load i32, i32* %3
%144 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 %143)
ret i32 0
}

LLVM IR (-O2):
@.str = [7 x i8] c"%[^\0A]s\00"
@.str.1 = [3 x i8] c"%d\00"
define i32 @main() {
%1 = alloca [1000 x i8]
%2 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 0
%3 = call i32 @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i8* %2)
%4 = load i8, i8* %2
%5 = icmp eq i8 %4, 0
br i1 %5, label %6, label %9
6: ; preds = %50, %0
%7 = phi i32 [ 0, %0 ], [ %51, %50 ]
%8 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 %7)
ret i32 0
9: ; preds = %0, %50
%10 = phi i64 [ %52, %50 ], [ 0, %0 ]
%11 = phi i8 [ %54, %50 ], [ %4, %0 ]
%12 = phi i32 [ %51, %50 ], [ 0, %0 ]
%13 = sext i8 %11 to i16
%14 = icmp slt i8 %11, 115
br i1 %14, label %15, label %35
15: ; preds = %9
%16 = icmp eq i8 %11, 32
br i1 %16, label %17, label %19
17: ; preds = %15
%18 = add nsw i32 %12, 1
br label %50
19: ; preds = %15
%20 = add nsw i16 %13, -97
%21 = srem i16 %20, 3
%22 = icmp eq i16 %21, 0
%23 = zext i1 %22 to i32
%24 = add nsw i32 %12, %23
%25 = add nsw i16 %13, -98
%26 = srem i16 %25, 3
%27 = icmp eq i16 %26, 0
%28 = add nsw i32 %24, 2
%29 = select i1 %27, i32 %28, i32 %24
%30 = add nsw i16 %13, -99
%31 = srem i16 %30, 3
%32 = icmp eq i16 %31, 0
%33 = add nsw i32 %29, 3
%34 = select i1 %32, i32 %33, i32 %29
br label %50
35: ; preds = %9
switch i8 %11, label %38 [
i8 115, label %36
i8 122, label %36
]
36: ; preds = %35, %35
%37 = add nsw i32 %12, 4
br label %38
38: ; preds = %35, %36
%39 = phi i32 [ %37, %36 ], [ %12, %35 ]
switch i8 %11, label %42 [
i8 116, label %40
i8 119, label %40
]
40: ; preds = %38, %38
%41 = add nsw i32 %39, 1
br label %42
42: ; preds = %38, %40
%43 = phi i32 [ %41, %40 ], [ %39, %38 ]
switch i8 %11, label %46 [
i8 117, label %44
i8 120, label %44
]
44: ; preds = %42, %42
%45 = add nsw i32 %43, 2
br label %46
46: ; preds = %42, %44
%47 = phi i32 [ %45, %44 ], [ %43, %42 ]
switch i8 %11, label %50 [
i8 118, label %48
i8 121, label %48
]
48: ; preds = %46, %46
%49 = add nsw i32 %47, 3
br label %50
50: ; preds = %19, %46, %17, %48
%51 = phi i32 [ %18, %17 ], [ %49, %48 ], [ %47, %46 ], [ %34, %19 ]
%52 = add nuw i64 %10, 1
%53 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %52
%54 = load i8, i8* %53
%55 = icmp eq i8 %54, 0
br i1 %55, label %6, label %9
}