#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
template < class T1, class T2, class T3> inline int DistinctE_L( T1 a, T2 b, T3 c) {
if ( a== b) {
if ( a== c) {
return 1 ;
}
return 2 ;
}
if ( a== c || b== c) {
return 2 ;
}
return 3 ;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
int countGoodSubstrings( string s) {
int i;
int res = 0 ;
for ( i= ( 2 ) ; i< ( s.size ( ) ) ; i++ ) {
if ( DistinctE_L( s[ i- 2 ] ,s[ i- 1 ] ,s[ i] ) == 3 ) {
res++ ;
}
}
return res;
}
}
;
// cLay version 20210607-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int countGoodSubstrings(string s) {
// int res = 0;
// rep(i,2,s.size()) if(DistinctE(s[i-2],s[i-1],s[i])==3) res++;
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPiBpbmxpbmUgaW50IERpc3RpbmN0RV9MKFQxIGEsIFQyIGIsIFQzIGMpewogIGlmKGE9PWIpewogICAgaWYoYT09Yyl7CiAgICAgIHJldHVybiAxOwogICAgfQogICAgcmV0dXJuIDI7CiAgfQogIGlmKGE9PWMgfHwgYj09Yyl7CiAgICByZXR1cm4gMjsKICB9CiAgcmV0dXJuIDM7Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IGNvdW50R29vZFN1YnN0cmluZ3Moc3RyaW5nIHMpewogICAgaW50IGk7CiAgICBpbnQgcmVzID0gMDsKICAgIGZvcihpPSgyKTtpPChzLnNpemUoKSk7aSsrKXsKICAgICAgaWYoRGlzdGluY3RFX0woc1tpLTJdLHNbaS0xXSxzW2ldKT09Myl7CiAgICAgICAgcmVzKys7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2ZXJzaW9uIDIwMjEwNjA3LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgaW50IGNvdW50R29vZFN1YnN0cmluZ3Moc3RyaW5nIHMpIHsKLy8gICAgIGludCByZXMgPSAwOwovLyAgICAgcmVwKGksMixzLnNpemUoKSkgaWYoRGlzdGluY3RFKHNbaS0yXSxzW2ktMV0sc1tpXSk9PTMpIHJlcysrOwovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==