#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
int countCharacters( vector< string> & words, string chars) {
int cnt[ 26 ] , i, k, res= 0 ;
for ( k= 0 ; k< ( words.size ( ) ) ; k++ ) {
for ( i= 0 ; i< ( 26 ) ; i++ ) {
cnt[ i] = 0 ;
}
for ( i= 0 ; i< ( chars.size ( ) ) ; i++ ) {
cnt[ chars[ i] - 'a' ] ++ ;
}
for ( i= 0 ; i< ( words[ k] .size ( ) ) ; i++ ) {
cnt[ words[ k] [ i] - 'a' ] -- ;
}
for ( i= 0 ; i< ( 26 ) ; i++ ) {
if ( cnt[ i] < 0 ) {
break ;
}
}
if ( i== 26 ) {
res + = words[ k] .size ( ) ;
}
}
return res;
}
}
;
// cLay varsion 20190820-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int countCharacters(vector<string>& words, string chars) {
// int i, cnt[26], res = 0;
//
// rep(k,words.size()){
// rep(i,26) cnt[i] = 0;
// rep(i,chars.size()) cnt[chars[i]-'a']++;
// rep(i,words[k].size()) cnt[words[k][i]-'a']--;
// rep(i,26) if(cnt[i] < 0) break;
// if(i==26) res += words[k].size();
// }
//
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIGludCBjb3VudENoYXJhY3RlcnModmVjdG9yPHN0cmluZz4mIHdvcmRzLCBzdHJpbmcgY2hhcnMpewogICAgaW50IGNudFsyNl0sIGksIGssIHJlcz0wOwogICAgZm9yKGs9MDtrPCh3b3Jkcy5zaXplKCkpO2srKyl7CiAgICAgIGZvcihpPTA7aTwoMjYpO2krKyl7CiAgICAgICAgY250W2ldID0gMDsKICAgICAgfQogICAgICBmb3IoaT0wO2k8KGNoYXJzLnNpemUoKSk7aSsrKXsKICAgICAgICBjbnRbY2hhcnNbaV0tJ2EnXSsrOwogICAgICB9CiAgICAgIGZvcihpPTA7aTwod29yZHNba10uc2l6ZSgpKTtpKyspewogICAgICAgIGNudFt3b3Jkc1trXVtpXS0nYSddLS07CiAgICAgIH0KICAgICAgZm9yKGk9MDtpPCgyNik7aSsrKXsKICAgICAgICBpZihjbnRbaV0gPCAwKXsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICBpZihpPT0yNil7CiAgICAgICAgcmVzICs9IHdvcmRzW2tdLnNpemUoKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlczsKICB9Cn0KOwovLyBjTGF5IHZhcnNpb24gMjAxOTA4MjAtMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICBpbnQgY291bnRDaGFyYWN0ZXJzKHZlY3RvcjxzdHJpbmc+JiB3b3Jkcywgc3RyaW5nIGNoYXJzKSB7Ci8vICAgICBpbnQgaSwgY250WzI2XSwgcmVzID0gMDsKLy8gCi8vICAgICByZXAoayx3b3Jkcy5zaXplKCkpewovLyAgICAgICByZXAoaSwyNikgY250W2ldID0gMDsKLy8gICAgICAgcmVwKGksY2hhcnMuc2l6ZSgpKSBjbnRbY2hhcnNbaV0tJ2EnXSsrOwovLyAgICAgICByZXAoaSx3b3Jkc1trXS5zaXplKCkpIGNudFt3b3Jkc1trXVtpXS0nYSddLS07Ci8vICAgICAgIHJlcChpLDI2KSBpZihjbnRbaV0gPCAwKSBicmVhazsKLy8gICAgICAgaWYoaT09MjYpIHJlcyArPSB3b3Jkc1trXS5zaXplKCk7Ci8vICAgICB9Ci8vIAovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==