#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
vector< string> Explode_L( const string & str, const string & d) {
int s = 0 ;
int i = 0 ;
int j;
vector< string> res;
while ( i + d.size ( ) - 1 < str.size ( ) ) {
for ( j= ( 0 ) ; j< ( d.size ( ) ) ; j++ ) {
if ( str[ i+ j] ! = d[ j] ) {
break ;
}
}
if ( j ! = d.size ( ) ) {
i++ ;
continue ;
}
res.push_back ( str.substr ( s, i- s) ) ;
s = ( i + = d.size ( ) ) ;
}
res.push_back ( str.substr ( s) ) ;
return res;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
int countValidWords( string sentence) {
int res = 0 ;
vector< string> tmp = Explode_L( sentence, " " ) ;
for ( string str : tmp) {
if ( str.size ( ) ) {
int i;
int a = 0 ;
for ( i= ( 0 ) ; i< ( str.size ( ) ) ; i++ ) {
if ( isdigit ( str[ i] ) ) {
goto Lj4PdHRW;
}
if ( str[ i] == '-' ) {
if ( i- 1 < 0 || ! isalpha ( str[ i- 1 ] ) ) {
goto Lj4PdHRW;
}
if ( ! isalpha ( str[ i+ 1 ] ) ) {
goto Lj4PdHRW;
}
a++ ;
continue ;
}
if ( ! isalpha ( str[ i] ) && i ! = str.size ( ) - 1 ) {
goto Lj4PdHRW;
}
}
if ( a <= 1 ) {
res++ ;
}
}
Lj4PdHRW:;
}
return res;
}
}
;
// cLay version 20211024-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int countValidWords(string sentence) {
// int res = 0;
// VS tmp = Explode(sentence, " ");
// for(string str : tmp) if(str.size()) {
// int a = 0;
// rep(i,str.size()){
// if(isdigit(str[i])) break_continue;
// if(str[i] == '-'){
// if(i-1 < 0 || !isalpha(str[i-1])) break_continue;
// if(!isalpha(str[i+1])) break_continue;
// a++, continue;
// }
// if(!isalpha(str[i]) && i != str.size()-1) break_continue;
// }
// if(a <= 1) res++;
// }
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3I8c3RyaW5nPiBFeHBsb2RlX0woY29uc3Qgc3RyaW5nICZzdHIsIGNvbnN0IHN0cmluZyAmZCl7CiAgaW50IHMgPSAwOwogIGludCBpID0gMDsKICBpbnQgajsKICB2ZWN0b3I8c3RyaW5nPiByZXM7CiAgd2hpbGUoaSArIGQuc2l6ZSgpIC0gMSA8IHN0ci5zaXplKCkpewogICAgZm9yKGo9KDApO2o8KGQuc2l6ZSgpKTtqKyspewogICAgICBpZihzdHJbaStqXSAhPSBkW2pdKXsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgaWYoaiAhPSBkLnNpemUoKSl7CiAgICAgIGkrKzsKICAgICAgY29udGludWU7CiAgICB9CiAgICByZXMucHVzaF9iYWNrKHN0ci5zdWJzdHIocywgaS1zKSk7CiAgICBzID0gKGkgKz0gZC5zaXplKCkpOwogIH0KICByZXMucHVzaF9iYWNrKHN0ci5zdWJzdHIocykpOwogIHJldHVybiByZXM7Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IGNvdW50VmFsaWRXb3JkcyhzdHJpbmcgc2VudGVuY2UpewogICAgaW50IHJlcyA9IDA7CiAgICB2ZWN0b3I8c3RyaW5nPiB0bXAgPUV4cGxvZGVfTChzZW50ZW5jZSwgIiAiKTsKICAgIGZvcihzdHJpbmcgc3RyIDogdG1wKXsKICAgICAgaWYoc3RyLnNpemUoKSl7CiAgICAgICAgaW50IGk7CiAgICAgICAgaW50IGEgPSAwOwogICAgICAgIGZvcihpPSgwKTtpPChzdHIuc2l6ZSgpKTtpKyspewogICAgICAgICAgaWYoaXNkaWdpdChzdHJbaV0pKXsKICAgICAgICAgICAgZ290byBMajRQZEhSVzsKICAgICAgICAgIH0KICAgICAgICAgIGlmKHN0cltpXSA9PSAnLScpewogICAgICAgICAgICBpZihpLTEgPCAwIHx8ICFpc2FscGhhKHN0cltpLTFdKSl7CiAgICAgICAgICAgICAgZ290byBMajRQZEhSVzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZighaXNhbHBoYShzdHJbaSsxXSkpewogICAgICAgICAgICAgIGdvdG8gTGo0UGRIUlc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYSsrOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmKCFpc2FscGhhKHN0cltpXSkgJiYgaSAhPSBzdHIuc2l6ZSgpLTEpewogICAgICAgICAgICBnb3RvIExqNFBkSFJXOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihhIDw9IDEpewogICAgICAgICAgcmVzKys7CiAgICAgICAgfQogICAgICB9CiAgICAgIExqNFBkSFJXOjsKICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2ZXJzaW9uIDIwMjExMDI0LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgaW50IGNvdW50VmFsaWRXb3JkcyhzdHJpbmcgc2VudGVuY2UpIHsKLy8gICAgIGludCByZXMgPSAwOwovLyAgICAgVlMgdG1wID0gRXhwbG9kZShzZW50ZW5jZSwgIiAiKTsKLy8gICAgIGZvcihzdHJpbmcgc3RyIDogdG1wKSBpZihzdHIuc2l6ZSgpKSB7Ci8vICAgICAgIGludCBhID0gMDsKLy8gICAgICAgcmVwKGksc3RyLnNpemUoKSl7Ci8vICAgICAgICAgaWYoaXNkaWdpdChzdHJbaV0pKSBicmVha19jb250aW51ZTsKLy8gICAgICAgICBpZihzdHJbaV0gPT0gJy0nKXsKLy8gICAgICAgICAgIGlmKGktMSA8IDAgfHwgIWlzYWxwaGEoc3RyW2ktMV0pKSBicmVha19jb250aW51ZTsKLy8gICAgICAgICAgIGlmKCFpc2FscGhhKHN0cltpKzFdKSkgYnJlYWtfY29udGludWU7Ci8vICAgICAgICAgICBhKyssIGNvbnRpbnVlOwovLyAgICAgICAgIH0KLy8gICAgICAgICBpZighaXNhbHBoYShzdHJbaV0pICYmIGkgIT0gc3RyLnNpemUoKS0xKSBicmVha19jb250aW51ZTsKLy8gICAgICAgfQovLyAgICAgICBpZihhIDw9IDEpIHJlcysrOwovLyAgICAgfQovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==