#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S chmin( S & a, T b) {
if ( a> b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int f( string s) {
int i, k, res= 0 ;
k = 'z' ;
for ( i= 0 ; i< ( s.size ( ) ) ; i++ ) {
chmin( k, s[ i] ) ;
}
for ( i= 0 ; i< ( s.size ( ) ) ; i++ ) {
if ( s[ i] == k) {
res++ ;
}
}
return res;
}
class Solution{
public :
vector< int > numSmallerByFrequency( vector< string> & q, vector< string> & w) {
int i, k, t, ws[ 11 ] = { } ;
vector< int > res;
for ( i= 0 ; i< ( w.size ( ) ) ; i++ ) {
ws[ f( w[ i] ) ] ++ ;
}
for ( i= 0 ; i< ( q.size ( ) ) ; i++ ) {
int j;
k = f( q[ i] ) ;
t = 0 ;
for ( j= ( k+ 1 ) ; j< ( 11 ) ; j++ ) {
t + = ws[ j] ;
}
res.push_back ( t) ;
}
return res;
}
}
;
// cLay varsion 20190829-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int f(string s){
// int i, k, res = 0;
// k = 'z';
// rep(i,s.size()) k <?= s[i];
// rep(i,s.size()) if(s[i]==k) res++;
// return res;
// }
//
// class Solution {
// public:
// vector<int> numSmallerByFrequency(vector<string>& q, vector<string>& w) {
// int i, k, t;
// int ws[11] = {};
// vector<int> res;
//
// rep(i,w.size()) ws[f(w[i])]++;
//
// rep(i,q.size()){
// k = f(q[i]);
// t = 0;
// rep(j,k+1,11) t += ws[j];
// res.push_back(t);
// }
//
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGNobWluKFMgJmEsIFQgYil7CiAgaWYoYT5iKXsKICAgIGE9YjsKICB9CiAgcmV0dXJuIGE7Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgppbnQgZihzdHJpbmcgcyl7CiAgaW50IGksIGssIHJlcz0wOwogIGsgPSAneic7CiAgZm9yKGk9MDtpPChzLnNpemUoKSk7aSsrKXsKICAgIGNobWluKGssIHNbaV0pOwogIH0KICBmb3IoaT0wO2k8KHMuc2l6ZSgpKTtpKyspewogICAgaWYoc1tpXT09ayl7CiAgICAgIHJlcysrOwogICAgfQogIH0KICByZXR1cm4gcmVzOwp9CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICB2ZWN0b3I8aW50PiBudW1TbWFsbGVyQnlGcmVxdWVuY3kodmVjdG9yPHN0cmluZz4mIHEsIHZlY3RvcjxzdHJpbmc+JiB3KXsKICAgIGludCBpLCBrLCB0LCB3c1sxMV09e307CiAgICB2ZWN0b3I8aW50PiByZXM7CiAgICBmb3IoaT0wO2k8KHcuc2l6ZSgpKTtpKyspewogICAgICB3c1tmKHdbaV0pXSsrOwogICAgfQogICAgZm9yKGk9MDtpPChxLnNpemUoKSk7aSsrKXsKICAgICAgaW50IGo7CiAgICAgIGsgPSBmKHFbaV0pOwogICAgICB0ID0gMDsKICAgICAgZm9yKGo9KGsrMSk7ajwoMTEpO2orKyl7CiAgICAgICAgdCArPSB3c1tqXTsKICAgICAgfQogICAgICByZXMucHVzaF9iYWNrKHQpOwogICAgfQogICAgcmV0dXJuIHJlczsKICB9Cn0KOwovLyBjTGF5IHZhcnNpb24gMjAxOTA4MjktMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBpbnQgZihzdHJpbmcgcyl7Ci8vICAgaW50IGksIGssIHJlcyA9IDA7Ci8vICAgayA9ICd6JzsKLy8gICByZXAoaSxzLnNpemUoKSkgayA8Pz0gc1tpXTsKLy8gICByZXAoaSxzLnNpemUoKSkgaWYoc1tpXT09aykgcmVzKys7Ci8vICAgcmV0dXJuIHJlczsKLy8gfQovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgdmVjdG9yPGludD4gbnVtU21hbGxlckJ5RnJlcXVlbmN5KHZlY3RvcjxzdHJpbmc+JiBxLCB2ZWN0b3I8c3RyaW5nPiYgdykgewovLyAgICAgaW50IGksIGssIHQ7Ci8vICAgICBpbnQgd3NbMTFdID0ge307Ci8vICAgICB2ZWN0b3I8aW50PiByZXM7Ci8vIAovLyAgICAgcmVwKGksdy5zaXplKCkpIHdzW2Yod1tpXSldKys7Ci8vIAovLyAgICAgcmVwKGkscS5zaXplKCkpewovLyAgICAgICBrID0gZihxW2ldKTsKLy8gICAgICAgdCA9IDA7Ci8vICAgICAgIHJlcChqLGsrMSwxMSkgdCArPSB3c1tqXTsKLy8gICAgICAgcmVzLnB1c2hfYmFjayh0KTsKLy8gICAgIH0KLy8gCi8vICAgICByZXR1cm4gcmVzOwovLyAgIH0KLy8gfTsK