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


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0xb4(%rbp)
movl   $0x0,-0xb8(%rbp)
lea    -0xb0(%rbp),%rdi
mov    0x2e94(%rip),%rax
mov    (%rax),%edx
mov    $0xa0,%esi
call   1040 <fgets@plt>
movl   $0x0,-0xb4(%rbp)
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0xa,%eax
je     145f <main+0x33f>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
je     125a <main+0x13a>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x61,%eax
je     125a <main+0x13a>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x64,%eax
je     125a <main+0x13a>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x67,%eax
je     125a <main+0x13a>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6a,%eax
je     125a <main+0x13a>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6d,%eax
je     125a <main+0x13a>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x70,%eax
je     125a <main+0x13a>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x74,%eax
je     125a <main+0x13a>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x77,%eax
jne    1269 <main+0x149>
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     1329 <main+0x209>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x65,%eax
je     1329 <main+0x209>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x68,%eax
je     1329 <main+0x209>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6b,%eax
je     1329 <main+0x209>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6e,%eax
je     1329 <main+0x209>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x71,%eax
je     1329 <main+0x209>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x75,%eax
je     1329 <main+0x209>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x78,%eax
jne    1338 <main+0x218>
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     13f8 <main+0x2d8>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x66,%eax
je     13f8 <main+0x2d8>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x69,%eax
je     13f8 <main+0x2d8>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6c,%eax
je     13f8 <main+0x2d8>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6f,%eax
je     13f8 <main+0x2d8>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x72,%eax
je     13f8 <main+0x2d8>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x76,%eax
je     13f8 <main+0x2d8>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x79,%eax
jne    1407 <main+0x2e7>
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     1437 <main+0x317>
movslq -0xb4(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jne    1446 <main+0x326>
mov    -0xb8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xb8(%rbp)
jmp    144b <main+0x32b>
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
jmp    116a <main+0x4a>
mov    -0xb8(%rbp),%esi
lea    0xb94(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0xa0,%rsp
mov    0x2eb9(%rip),%rax
mov    (%rax),%edx
mov    %rsp,%rbx
mov    %rbx,%rdi
mov    $0xa0,%esi
call   1040 <fgets@plt>
xor    %esi,%esi
mov    $0x489249,%eax
lea    0xeb1(%rip),%rcx
jmp    1167 <main+0x47>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x4,%esi
add    $0x1,%rbx
movzbl (%rbx),%edx
lea    -0x20(%rdx),%edi
cmp    $0x57,%dil
ja     11bb <main+0x9b>
movzbl %dil,%edi
movslq (%rcx,%rdi,4),%rdi
add    %rcx,%rdi
jmp    *%rdi
add    $0x1,%esi
lea    -0x62(%rdx),%edi
cmp    $0x16,%dil
ja     1199 <main+0x79>
movzbl %dil,%edi
bt     %rdi,%rax
jae    1199 <main+0x79>
add    $0x2,%esi
lea    -0x63(%rdx),%edi
cmp    $0x16,%dil
ja     11af <main+0x8f>
movzbl %dil,%edi
bt     %rdi,%rax
jae    11af <main+0x8f>
add    $0x3,%esi
cmp    $0x7a,%dl
je     1160 <main+0x40>
cmp    $0x73,%dl
je     1160 <main+0x40>
jmp    1163 <main+0x43>
cmp    $0xa,%dl
jne    1183 <main+0x63>
lea    0xf99(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0xa0,%rsp
pop    %rbx
ret

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

LLVM IR (-O2):
@stdin = global i32 0
@.str = [4 x i8] c"%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 = load i32, i32* @stdin
%4 = call i32 @fgets(i8* %2, i32 160, i32 %3)
br label %5
5: ; preds = %24, %0
%6 = phi i64 [ %26, %24 ], [ 0, %0 ]
%7 = phi i32 [ %25, %24 ], [ 0, %0 ]
%8 = getelementptr inbounds [160 x i8], [160 x i8]* %1, i64 0, i64 %6
%9 = load i8, i8* %8
switch i8 %9, label %12 [
i8 10, label %27
i8 32, label %10
i8 97, label %10
i8 100, label %10
i8 103, label %10
i8 106, label %10
i8 109, label %10
i8 112, label %10
i8 116, label %10
i8 119, label %10
]
10: ; preds = %5, %5, %5, %5, %5, %5, %5, %5, %5
%11 = add nsw i32 %7, 1
br label %12
12: ; preds = %5, %10
%13 = phi i32 [ %11, %10 ], [ %7, %5 ]
switch i8 %9, label %16 [
i8 98, label %14
i8 101, label %14
i8 104, label %14
i8 107, label %14
i8 110, label %14
i8 113, label %14
i8 117, label %14
i8 120, label %14
]
14: ; preds = %12, %12, %12, %12, %12, %12, %12, %12
%15 = add nsw i32 %13, 2
br label %16
16: ; preds = %12, %14
%17 = phi i32 [ %15, %14 ], [ %13, %12 ]
switch i8 %9, label %20 [
i8 99, label %18
i8 102, label %18
i8 105, label %18
i8 108, label %18
i8 111, label %18
i8 114, label %18
i8 118, label %18
i8 121, label %18
]
18: ; preds = %16, %16, %16, %16, %16, %16, %16, %16
%19 = add nsw i32 %17, 3
br label %20
20: ; preds = %16, %18
%21 = phi i32 [ %19, %18 ], [ %17, %16 ]
switch i8 %9, label %24 [
i8 115, label %22
i8 122, label %22
]
22: ; preds = %20, %20
%23 = add nsw i32 %21, 4
br label %24
24: ; preds = %20, %22
%25 = phi i32 [ %23, %22 ], [ %21, %20 ]
%26 = add nuw i64 %6, 1
br label %5
27: ; preds = %5
%28 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %7)
ret i32 0
}