#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 words[160];
  int counter, sum = 0;
  scanf(" %[^\n]s ", words);
  for (counter = 0; words[counter] != 0; counter++) {
    if (words[counter] == 'a' || words[counter] == 'd' ||
        words[counter] == 'g' || words[counter] == 'j' ||
        words[counter] == 'm' || words[counter] == 'p' ||
        words[counter] == 't' || words[counter] == 'w')
      sum += 1;
    if (words[counter] == 'b' || words[counter] == 'e' ||
        words[counter] == 'h' || words[counter] == 'k' ||
        words[counter] == 'n' || words[counter] == 'q' ||
        words[counter] == 'u' || words[counter] == 'x')
      sum += 2;
    if (words[counter] == 'c' || words[counter] == 'f' ||
        words[counter] == 'i' || words[counter] == 'l' ||
        words[counter] == 'o' || words[counter] == 'r' ||
        words[counter] == 'v' || words[counter] == 'y')
      sum += 3;
    if (words[counter] == 's' || words[counter] == 'z')
      sum += 4;
    if (words[counter] == ' ')
      sum += 1;
  }
  printf("\n  %d \n", sum);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0xb8(%rbp)
lea    -0xb0(%rbp),%rsi
lea    0xeb6(%rip),%rdi
call   1040 <scanf@plt>
movl   $0x0,-0xb4(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     145d <main+0x33d>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x61,%eax
je     1231 <main+0x111>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x64,%eax
je     1231 <main+0x111>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x67,%eax
je     1231 <main+0x111>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6a,%eax
je     1231 <main+0x111>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6d,%eax
je     1231 <main+0x111>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x70,%eax
je     1231 <main+0x111>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x74,%eax
je     1231 <main+0x111>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x77,%eax
jne    1240 <main+0x120>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x62,%eax
je     1300 <main+0x1e0>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x65,%eax
je     1300 <main+0x1e0>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x68,%eax
je     1300 <main+0x1e0>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6b,%eax
je     1300 <main+0x1e0>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6e,%eax
je     1300 <main+0x1e0>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x71,%eax
je     1300 <main+0x1e0>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x75,%eax
je     1300 <main+0x1e0>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x78,%eax
jne    130f <main+0x1ef>
mov    -0xb8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x63,%eax
je     13cf <main+0x2af>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x66,%eax
je     13cf <main+0x2af>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x69,%eax
je     13cf <main+0x2af>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6c,%eax
je     13cf <main+0x2af>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6f,%eax
je     13cf <main+0x2af>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x72,%eax
je     13cf <main+0x2af>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x76,%eax
je     13cf <main+0x2af>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x79,%eax
jne    13de <main+0x2be>
mov    -0xb8(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x73,%eax
je     140e <main+0x2ee>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jne    141d <main+0x2fd>
mov    -0xb8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xb8(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
jne    1444 <main+0x324>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
jmp    1449 <main+0x329>
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
jmp    1159 <main+0x39>
mov    -0xb8(%rbp),%esi
lea    0xb9f(%rip),%rdi
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0xa0,%rsp
lea    0xed1(%rip),%rdi
mov    %rsp,%rbx
mov    %rbx,%rsi
call   1040 <scanf@plt>
xor    %esi,%esi
mov    $0x489249,%eax
jmp    1161 <main+0x41>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x4,%esi
xor    %edx,%edx
cmp    $0x20,%cl
sete   %dl
add    %edx,%esi
add    $0x1,%rbx
movzbl (%rbx),%ecx
lea    -0x61(%rcx),%edx
cmp    $0x16,%dl
ja     11ac <main+0x8c>
movzbl %dl,%edx
bt     %rdx,%rax
jae    11ac <main+0x8c>
add    $0x1,%esi
lea    -0x62(%rcx),%edx
cmp    $0x16,%dl
ja     118c <main+0x6c>
movzbl %dl,%edx
bt     %rdx,%rax
jae    118c <main+0x6c>
add    $0x2,%esi
lea    -0x63(%rcx),%edx
cmp    $0x16,%dl
ja     11a0 <main+0x80>
movzbl %dl,%edx
bt     %rdx,%rax
jae    11a0 <main+0x80>
add    $0x3,%esi
cmp    $0x7a,%cl
je     1150 <main+0x30>
cmp    $0x73,%cl
je     1150 <main+0x30>
jmp    1153 <main+0x33>
test   %cl,%cl
jne    1178 <main+0x58>
lea    0xe52(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0xa0,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [9 x i8] c" %[^\0A]s \00"
@.str.1 = [8 x i8] c"\0A %d \0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [160 x i8]
%3 = alloca i32
%4 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %4
%5 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 0
%6 = call i32 @scanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i8* %5)
store i32 0, i32* %3
br label %7
7: ; preds = %219, %0
%8 = load i32, i32* %3
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds [160 x i8], [160 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 %222
14: ; preds = %7
%15 = load i32, i32* %3
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %16
%18 = load i8, i8* %17
%19 = sext i8 %18 to i32
%20 = icmp eq i32 %19, 97
br i1 %20, label %70, label %21
21: ; preds = %14
%22 = load i32, i32* %3
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %23
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = icmp eq i32 %26, 100
br i1 %27, label %70, label %28
28: ; preds = %21
%29 = load i32, i32* %3
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %30
%32 = load i8, i8* %31
%33 = sext i8 %32 to i32
%34 = icmp eq i32 %33, 103
br i1 %34, label %70, label %35
35: ; preds = %28
%36 = load i32, i32* %3
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %37
%39 = load i8, i8* %38
%40 = sext i8 %39 to i32
%41 = icmp eq i32 %40, 106
br i1 %41, label %70, label %42
42: ; preds = %35
%43 = load i32, i32* %3
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %44
%46 = load i8, i8* %45
%47 = sext i8 %46 to i32
%48 = icmp eq i32 %47, 109
br i1 %48, label %70, label %49
49: ; preds = %42
%50 = load i32, i32* %3
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %51
%53 = load i8, i8* %52
%54 = sext i8 %53 to i32
%55 = icmp eq i32 %54, 112
br i1 %55, label %70, label %56
56: ; preds = %49
%57 = load i32, i32* %3
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %58
%60 = load i8, i8* %59
%61 = sext i8 %60 to i32
%62 = icmp eq i32 %61, 116
br i1 %62, label %70, label %63
63: ; preds = %56
%64 = load i32, i32* %3
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %65
%67 = load i8, i8* %66
%68 = sext i8 %67 to i32
%69 = icmp eq i32 %68, 119
br i1 %69, label %70, label %73
70: ; preds = %63, %56, %49, %42, %35, %28, %21, %14
%71 = load i32, i32* %4
%72 = add nsw i32 %71, 1
store i32 %72, i32* %4
br label %73
73: ; preds = %70, %63
%74 = load i32, i32* %3
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %75
%77 = load i8, i8* %76
%78 = sext i8 %77 to i32
%79 = icmp eq i32 %78, 98
br i1 %79, label %129, label %80
80: ; preds = %73
%81 = load i32, i32* %3
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %82
%84 = load i8, i8* %83
%85 = sext i8 %84 to i32
%86 = icmp eq i32 %85, 101
br i1 %86, label %129, label %87
87: ; preds = %80
%88 = load i32, i32* %3
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %89
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = icmp eq i32 %92, 104
br i1 %93, label %129, label %94
94: ; preds = %87
%95 = load i32, i32* %3
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %96
%98 = load i8, i8* %97
%99 = sext i8 %98 to i32
%100 = icmp eq i32 %99, 107
br i1 %100, label %129, label %101
101: ; preds = %94
%102 = load i32, i32* %3
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %103
%105 = load i8, i8* %104
%106 = sext i8 %105 to i32
%107 = icmp eq i32 %106, 110
br i1 %107, label %129, label %108
108: ; preds = %101
%109 = load i32, i32* %3
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %110
%112 = load i8, i8* %111
%113 = sext i8 %112 to i32
%114 = icmp eq i32 %113, 113
br i1 %114, label %129, label %115
115: ; preds = %108
%116 = load i32, i32* %3
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %117
%119 = load i8, i8* %118
%120 = sext i8 %119 to i32
%121 = icmp eq i32 %120, 117
br i1 %121, label %129, label %122
122: ; preds = %115
%123 = load i32, i32* %3
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %124
%126 = load i8, i8* %125
%127 = sext i8 %126 to i32
%128 = icmp eq i32 %127, 120
br i1 %128, label %129, label %132
129: ; preds = %122, %115, %108, %101, %94, %87, %80, %73
%130 = load i32, i32* %4
%131 = add nsw i32 %130, 2
store i32 %131, i32* %4
br label %132
132: ; preds = %129, %122
%133 = load i32, i32* %3
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %134
%136 = load i8, i8* %135
%137 = sext i8 %136 to i32
%138 = icmp eq i32 %137, 99
br i1 %138, label %188, label %139
139: ; preds = %132
%140 = load i32, i32* %3
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %141
%143 = load i8, i8* %142
%144 = sext i8 %143 to i32
%145 = icmp eq i32 %144, 102
br i1 %145, label %188, label %146
146: ; preds = %139
%147 = load i32, i32* %3
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %148
%150 = load i8, i8* %149
%151 = sext i8 %150 to i32
%152 = icmp eq i32 %151, 105
br i1 %152, label %188, label %153
153: ; preds = %146
%154 = load i32, i32* %3
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %155
%157 = load i8, i8* %156
%158 = sext i8 %157 to i32
%159 = icmp eq i32 %158, 108
br i1 %159, label %188, label %160
160: ; preds = %153
%161 = load i32, i32* %3
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %162
%164 = load i8, i8* %163
%165 = sext i8 %164 to i32
%166 = icmp eq i32 %165, 111
br i1 %166, label %188, label %167
167: ; preds = %160
%168 = load i32, i32* %3
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %169
%171 = load i8, i8* %170
%172 = sext i8 %171 to i32
%173 = icmp eq i32 %172, 114
br i1 %173, label %188, label %174
174: ; preds = %167
%175 = load i32, i32* %3
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %176
%178 = load i8, i8* %177
%179 = sext i8 %178 to i32
%180 = icmp eq i32 %179, 118
br i1 %180, label %188, label %181
181: ; preds = %174
%182 = load i32, i32* %3
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %183
%185 = load i8, i8* %184
%186 = sext i8 %185 to i32
%187 = icmp eq i32 %186, 121
br i1 %187, label %188, label %191
188: ; preds = %181, %174, %167, %160, %153, %146, %139, %132
%189 = load i32, i32* %4
%190 = add nsw i32 %189, 3
store i32 %190, i32* %4
br label %191
191: ; preds = %188, %181
%192 = load i32, i32* %3
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %193
%195 = load i8, i8* %194
%196 = sext i8 %195 to i32
%197 = icmp eq i32 %196, 115
br i1 %197, label %205, label %198
198: ; preds = %191
%199 = load i32, i32* %3
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %200
%202 = load i8, i8* %201
%203 = sext i8 %202 to i32
%204 = icmp eq i32 %203, 122
br i1 %204, label %205, label %208
205: ; preds = %198, %191
%206 = load i32, i32* %4
%207 = add nsw i32 %206, 4
store i32 %207, i32* %4
br label %208
208: ; preds = %205, %198
%209 = load i32, i32* %3
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds [160 x i8], [160 x i8]* %2, i64 0, i64 %210
%212 = load i8, i8* %211
%213 = sext i8 %212 to i32
%214 = icmp eq i32 %213, 32
br i1 %214, label %215, label %218
215: ; preds = %208
%216 = load i32, i32* %4
%217 = add nsw i32 %216, 1
store i32 %217, i32* %4
br label %218
218: ; preds = %215, %208
br label %219
219: ; preds = %218
%220 = load i32, i32* %3
%221 = add nsw i32 %220, 1
store i32 %221, i32* %3
br label %7
222: ; preds = %7
%223 = load i32, i32* %4
%224 = call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i32 %223)
%225 = load i32, i32* %1
ret i32 %225
}

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