#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 */
char getchar();
int /*<<< orphan*/ printf(char *, int);
int main() {
  char input_s;
  int i = 0;
  do {
    input_s = getchar();
    if (input_s == 'a' || input_s == 'd' || input_s == 'g' || input_s == 'j' ||
        input_s == 'm' || input_s == 'p' || input_s == 't' || input_s == 'w' ||
        input_s == ' ')
      i++;
    if (input_s == 'b' || input_s == 'e' || input_s == 'h' || input_s == 'k' ||
        input_s == 'n' || input_s == 'q' || input_s == 'u' || input_s == 'x')
      i += 2;
    if (input_s == 'c' || input_s == 'f' || input_s == 'i' || input_s == 'l' ||
        input_s == 'o' || input_s == 'r' || input_s == 'v' || input_s == 'y')
      i += 3;
    if (input_s == 's' || input_s == 'z')
      i += 4;
  } while (input_s != '\n');
  printf("%d", i);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0xc(%rbp)
mov    $0x0,%al
call   1040 <getchar@plt>
mov    %al,-0x5(%rbp)
movsbl -0x5(%rbp),%eax
cmp    $0x61,%eax
je     11b5 <main+0x95>
movsbl -0x5(%rbp),%eax
cmp    $0x64,%eax
je     11b5 <main+0x95>
movsbl -0x5(%rbp),%eax
cmp    $0x67,%eax
je     11b5 <main+0x95>
movsbl -0x5(%rbp),%eax
cmp    $0x6a,%eax
je     11b5 <main+0x95>
movsbl -0x5(%rbp),%eax
cmp    $0x6d,%eax
je     11b5 <main+0x95>
movsbl -0x5(%rbp),%eax
cmp    $0x70,%eax
je     11b5 <main+0x95>
movsbl -0x5(%rbp),%eax
cmp    $0x74,%eax
je     11b5 <main+0x95>
movsbl -0x5(%rbp),%eax
cmp    $0x77,%eax
je     11b5 <main+0x95>
movsbl -0x5(%rbp),%eax
cmp    $0x20,%eax
jne    11be <main+0x9e>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
movsbl -0x5(%rbp),%eax
cmp    $0x62,%eax
je     1226 <main+0x106>
movsbl -0x5(%rbp),%eax
cmp    $0x65,%eax
je     1226 <main+0x106>
movsbl -0x5(%rbp),%eax
cmp    $0x68,%eax
je     1226 <main+0x106>
movsbl -0x5(%rbp),%eax
cmp    $0x6b,%eax
je     1226 <main+0x106>
movsbl -0x5(%rbp),%eax
cmp    $0x6e,%eax
je     1226 <main+0x106>
movsbl -0x5(%rbp),%eax
cmp    $0x71,%eax
je     1226 <main+0x106>
movsbl -0x5(%rbp),%eax
cmp    $0x75,%eax
je     1226 <main+0x106>
movsbl -0x5(%rbp),%eax
cmp    $0x78,%eax
jne    122f <main+0x10f>
mov    -0xc(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xc(%rbp)
movsbl -0x5(%rbp),%eax
cmp    $0x63,%eax
je     1297 <main+0x177>
movsbl -0x5(%rbp),%eax
cmp    $0x66,%eax
je     1297 <main+0x177>
movsbl -0x5(%rbp),%eax
cmp    $0x69,%eax
je     1297 <main+0x177>
movsbl -0x5(%rbp),%eax
cmp    $0x6c,%eax
je     1297 <main+0x177>
movsbl -0x5(%rbp),%eax
cmp    $0x6f,%eax
je     1297 <main+0x177>
movsbl -0x5(%rbp),%eax
cmp    $0x72,%eax
je     1297 <main+0x177>
movsbl -0x5(%rbp),%eax
cmp    $0x76,%eax
je     1297 <main+0x177>
movsbl -0x5(%rbp),%eax
cmp    $0x79,%eax
jne    12a0 <main+0x180>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
movsbl -0x5(%rbp),%eax
cmp    $0x73,%eax
je     12ba <main+0x19a>
movsbl -0x5(%rbp),%eax
cmp    $0x7a,%eax
jne    12c3 <main+0x1a3>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
jmp    12c8 <main+0x1a8>
movsbl -0x5(%rbp),%eax
cmp    $0xa,%eax
jne    1136 <main+0x16>
mov    -0xc(%rbp),%esi
lea    0xd21(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
mov    $0x489249,%r14d
lea    0xece(%rip),%r15
xor    %ebx,%ebx
jmp    1147 <main+0x27>
cs nopw 0x0(%rax,%rax,1)
add    $0x4,%ebx
cmp    $0xa,%al
je     1197 <main+0x77>
xor    %eax,%eax
call   1040 <getchar@plt>
lea    -0x20(%rax),%ecx
cmp    $0x57,%cl
ja     1165 <main+0x45>
movzbl %cl,%ecx
movslq (%r15,%rcx,4),%rcx
add    %r15,%rcx
jmp    *%rcx
add    $0x1,%ebx
lea    -0x62(%rax),%ecx
cmp    $0x16,%cl
ja     1179 <main+0x59>
movzbl %cl,%ecx
bt     %rcx,%r14
jae    1179 <main+0x59>
add    $0x2,%ebx
lea    -0x63(%rax),%ecx
cmp    $0x16,%cl
ja     118d <main+0x6d>
movzbl %cl,%ecx
bt     %rcx,%r14
jae    118d <main+0x6d>
add    $0x3,%ebx
cmp    $0x7a,%al
je     1140 <main+0x20>
cmp    $0x73,%al
je     1140 <main+0x20>
jmp    1143 <main+0x23>
lea    0xfc2(%rip),%rdi
mov    %ebx,%esi
call   1030 <printf@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
@.str = [3 x i8] c"%d\00"
define i32 @main() {
br label %1
1: ; preds = %18, %0
%2 = phi i32 [ 0, %0 ], [ %19, %18 ]
%3 = tail call signext i8 (...) @getchar()
switch i8 %3, label %6 [
i8 119, label %4
i8 116, label %4
i8 112, label %4
i8 109, label %4
i8 106, label %4
i8 103, label %4
i8 100, label %4
i8 97, label %4
i8 32, label %4
]
4: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1
%5 = add nsw i32 %2, 1
br label %6
6: ; preds = %1, %4
%7 = phi i32 [ %5, %4 ], [ %2, %1 ]
switch i8 %3, label %10 [
i8 120, label %8
i8 117, label %8
i8 113, label %8
i8 110, label %8
i8 107, label %8
i8 104, label %8
i8 101, label %8
i8 98, label %8
]
8: ; preds = %6, %6, %6, %6, %6, %6, %6, %6
%9 = add nsw i32 %7, 2
br label %10
10: ; preds = %6, %8
%11 = phi i32 [ %9, %8 ], [ %7, %6 ]
switch i8 %3, label %14 [
i8 121, label %12
i8 118, label %12
i8 114, label %12
i8 111, label %12
i8 108, label %12
i8 105, label %12
i8 102, label %12
i8 99, label %12
]
12: ; preds = %10, %10, %10, %10, %10, %10, %10, %10
%13 = add nsw i32 %11, 3
br label %14
14: ; preds = %10, %12
%15 = phi i32 [ %13, %12 ], [ %11, %10 ]
switch i8 %3, label %18 [
i8 122, label %16
i8 115, label %16
]
16: ; preds = %14, %14
%17 = add nsw i32 %15, 4
br label %18
18: ; preds = %14, %16
%19 = phi i32 [ %17, %16 ], [ %15, %14 ]
%20 = icmp eq i8 %3, 10
br i1 %20, label %21, label %1
21: ; preds = %18
%22 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %19)
ret i32 0
}