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


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0xc(%rbp)
movl   $0x1,-0xb4(%rbp)
movl   $0x2,-0xb8(%rbp)
movl   $0x3,-0xbc(%rbp)
movl   $0x4,-0xc0(%rbp)
lea    -0xb0(%rbp),%rdi
mov    0x2e79(%rip),%rax
mov    (%rax),%edx
mov    $0xa0,%esi
call   1040 <fgets@plt>
movl   $0x0,-0x8(%rbp)
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1411 <main+0x2f1>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x61,%eax
je     1254 <main+0x134>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x64,%eax
je     1254 <main+0x134>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x67,%eax
je     1254 <main+0x134>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6a,%eax
je     1254 <main+0x134>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6d,%eax
je     1254 <main+0x134>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x70,%eax
je     1254 <main+0x134>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x74,%eax
je     1254 <main+0x134>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x77,%eax
je     1254 <main+0x134>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
jne    1260 <main+0x140>
mov    -0xc(%rbp),%eax
add    -0xb4(%rbp),%eax
mov    %eax,-0xc(%rbp)
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x62,%eax
je     1308 <main+0x1e8>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x65,%eax
je     1308 <main+0x1e8>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x68,%eax
je     1308 <main+0x1e8>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6b,%eax
je     1308 <main+0x1e8>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6e,%eax
je     1308 <main+0x1e8>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x71,%eax
je     1308 <main+0x1e8>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x75,%eax
je     1308 <main+0x1e8>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x78,%eax
jne    1314 <main+0x1f4>
mov    -0xc(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xc(%rbp)
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x63,%eax
je     13bc <main+0x29c>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x66,%eax
je     13bc <main+0x29c>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x69,%eax
je     13bc <main+0x29c>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6c,%eax
je     13bc <main+0x29c>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x6f,%eax
je     13bc <main+0x29c>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x72,%eax
je     13bc <main+0x29c>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x76,%eax
je     13bc <main+0x29c>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x79,%eax
jne    13c8 <main+0x2a8>
mov    -0xc(%rbp),%eax
add    -0xbc(%rbp),%eax
mov    %eax,-0xc(%rbp)
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x73,%eax
je     13f2 <main+0x2d2>
movslq -0x8(%rbp),%rax
movsbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jne    13fe <main+0x2de>
mov    -0xc(%rbp),%eax
add    -0xc0(%rbp),%eax
mov    %eax,-0xc(%rbp)
jmp    1403 <main+0x2e3>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1182 <main+0x62>
mov    -0xc(%rbp),%esi
lea    0xbe5(%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>
test   %dl,%dl
jne    1183 <main+0x63>
lea    0xf9a(%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"\0A%d\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca [160 x i8]
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %3
store i32 1, i32* %6
store i32 2, i32* %7
store i32 3, i32* %8
store i32 4, i32* %9
%10 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 0
%11 = load i32, i32* @stdin
%12 = call i32 @fgets(i8* %10, i32 160, i32 %11)
store i32 0, i32* %2
br label %13
13: ; preds = %226, %0
%14 = load i32, i32* %2
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %15
%17 = load i8, i8* %16
%18 = sext i8 %17 to i32
%19 = icmp ne i32 %18, 0
br i1 %19, label %20, label %229
20: ; preds = %13
%21 = load i32, i32* %2
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %22
%24 = load i8, i8* %23
%25 = sext i8 %24 to i32
%26 = icmp eq i32 %25, 97
br i1 %26, label %83, label %27
27: ; preds = %20
%28 = load i32, i32* %2
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %29
%31 = load i8, i8* %30
%32 = sext i8 %31 to i32
%33 = icmp eq i32 %32, 100
br i1 %33, label %83, label %34
34: ; preds = %27
%35 = load i32, i32* %2
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %36
%38 = load i8, i8* %37
%39 = sext i8 %38 to i32
%40 = icmp eq i32 %39, 103
br i1 %40, label %83, label %41
41: ; preds = %34
%42 = load i32, i32* %2
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %43
%45 = load i8, i8* %44
%46 = sext i8 %45 to i32
%47 = icmp eq i32 %46, 106
br i1 %47, label %83, label %48
48: ; preds = %41
%49 = load i32, i32* %2
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %50
%52 = load i8, i8* %51
%53 = sext i8 %52 to i32
%54 = icmp eq i32 %53, 109
br i1 %54, label %83, label %55
55: ; preds = %48
%56 = load i32, i32* %2
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %57
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = icmp eq i32 %60, 112
br i1 %61, label %83, label %62
62: ; preds = %55
%63 = load i32, i32* %2
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %64
%66 = load i8, i8* %65
%67 = sext i8 %66 to i32
%68 = icmp eq i32 %67, 116
br i1 %68, label %83, label %69
69: ; preds = %62
%70 = load i32, i32* %2
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %71
%73 = load i8, i8* %72
%74 = sext i8 %73 to i32
%75 = icmp eq i32 %74, 119
br i1 %75, label %83, label %76
76: ; preds = %69
%77 = load i32, i32* %2
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %78
%80 = load i8, i8* %79
%81 = sext i8 %80 to i32
%82 = icmp eq i32 %81, 32
br i1 %82, label %83, label %87
83: ; preds = %76, %69, %62, %55, %48, %41, %34, %27, %20
%84 = load i32, i32* %3
%85 = load i32, i32* %6
%86 = add nsw i32 %84, %85
store i32 %86, i32* %3
br label %87
87: ; preds = %83, %76
%88 = load i32, i32* %2
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %89
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = icmp eq i32 %92, 98
br i1 %93, label %143, label %94
94: ; preds = %87
%95 = load i32, i32* %2
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %96
%98 = load i8, i8* %97
%99 = sext i8 %98 to i32
%100 = icmp eq i32 %99, 101
br i1 %100, label %143, label %101
101: ; preds = %94
%102 = load i32, i32* %2
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %103
%105 = load i8, i8* %104
%106 = sext i8 %105 to i32
%107 = icmp eq i32 %106, 104
br i1 %107, label %143, label %108
108: ; preds = %101
%109 = load i32, i32* %2
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %110
%112 = load i8, i8* %111
%113 = sext i8 %112 to i32
%114 = icmp eq i32 %113, 107
br i1 %114, label %143, label %115
115: ; preds = %108
%116 = load i32, i32* %2
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %117
%119 = load i8, i8* %118
%120 = sext i8 %119 to i32
%121 = icmp eq i32 %120, 110
br i1 %121, label %143, label %122
122: ; preds = %115
%123 = load i32, i32* %2
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %124
%126 = load i8, i8* %125
%127 = sext i8 %126 to i32
%128 = icmp eq i32 %127, 113
br i1 %128, label %143, label %129
129: ; preds = %122
%130 = load i32, i32* %2
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %131
%133 = load i8, i8* %132
%134 = sext i8 %133 to i32
%135 = icmp eq i32 %134, 117
br i1 %135, label %143, label %136
136: ; preds = %129
%137 = load i32, i32* %2
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %138
%140 = load i8, i8* %139
%141 = sext i8 %140 to i32
%142 = icmp eq i32 %141, 120
br i1 %142, label %143, label %147
143: ; preds = %136, %129, %122, %115, %108, %101, %94, %87
%144 = load i32, i32* %3
%145 = load i32, i32* %7
%146 = add nsw i32 %144, %145
store i32 %146, i32* %3
br label %147
147: ; preds = %143, %136
%148 = load i32, i32* %2
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %149
%151 = load i8, i8* %150
%152 = sext i8 %151 to i32
%153 = icmp eq i32 %152, 99
br i1 %153, label %203, label %154
154: ; preds = %147
%155 = load i32, i32* %2
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %156
%158 = load i8, i8* %157
%159 = sext i8 %158 to i32
%160 = icmp eq i32 %159, 102
br i1 %160, label %203, label %161
161: ; preds = %154
%162 = load i32, i32* %2
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %163
%165 = load i8, i8* %164
%166 = sext i8 %165 to i32
%167 = icmp eq i32 %166, 105
br i1 %167, label %203, label %168
168: ; preds = %161
%169 = load i32, i32* %2
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %170
%172 = load i8, i8* %171
%173 = sext i8 %172 to i32
%174 = icmp eq i32 %173, 108
br i1 %174, label %203, label %175
175: ; preds = %168
%176 = load i32, i32* %2
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %177
%179 = load i8, i8* %178
%180 = sext i8 %179 to i32
%181 = icmp eq i32 %180, 111
br i1 %181, label %203, label %182
182: ; preds = %175
%183 = load i32, i32* %2
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %184
%186 = load i8, i8* %185
%187 = sext i8 %186 to i32
%188 = icmp eq i32 %187, 114
br i1 %188, label %203, label %189
189: ; preds = %182
%190 = load i32, i32* %2
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %191
%193 = load i8, i8* %192
%194 = sext i8 %193 to i32
%195 = icmp eq i32 %194, 118
br i1 %195, label %203, label %196
196: ; preds = %189
%197 = load i32, i32* %2
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %198
%200 = load i8, i8* %199
%201 = sext i8 %200 to i32
%202 = icmp eq i32 %201, 121
br i1 %202, label %203, label %207
203: ; preds = %196, %189, %182, %175, %168, %161, %154, %147
%204 = load i32, i32* %3
%205 = load i32, i32* %8
%206 = add nsw i32 %204, %205
store i32 %206, i32* %3
br label %207
207: ; preds = %203, %196
%208 = load i32, i32* %2
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %209
%211 = load i8, i8* %210
%212 = sext i8 %211 to i32
%213 = icmp eq i32 %212, 115
br i1 %213, label %221, label %214
214: ; preds = %207
%215 = load i32, i32* %2
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds [160 x i8], [160 x i8]* %5, i64 0, i64 %216
%218 = load i8, i8* %217
%219 = sext i8 %218 to i32
%220 = icmp eq i32 %219, 122
br i1 %220, label %221, label %225
221: ; preds = %214, %207
%222 = load i32, i32* %3
%223 = load i32, i32* %9
%224 = add nsw i32 %222, %223
store i32 %224, i32* %3
br label %225
225: ; preds = %221, %214
br label %226
226: ; preds = %225
%227 = load i32, i32* %2
%228 = add nsw i32 %227, 1
store i32 %228, i32* %2
br label %13
229: ; preds = %13
%230 = load i32, i32* %3
%231 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %230)
ret i32 0
}

LLVM IR (-O2):
@stdin = global i32 0
@.str = [4 x i8] c"\0A%d\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 0, label %27
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
i8 32, 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
}