#include #include #include #include #include #include using namespace std; std::string readValue() { std::string str; std::cin >> str; size_t pos = str.find('*'); std::string front = str.substr(0, pos); std::string back; if (pos != str.npos) { back = str.substr(pos + 1); } std::string middle(9 - (front.size() + back.size()), '?'); // std::cout << front << "+" << middle << "+" << back << "\n"; return front + middle + back; } struct Reader { Reader( vector &list) : list(list) {} vector &list; int i=0; }; int main() { int i; std::cin >> i; map> index; string s; for (; i > 0; --i) { //std::string v = readValue(); cin >> s; for (int pos=0; pos> i; std::string value; for (; i > 0; --i) { value = readValue(); //std::cout << value << "\n"; bool done = false; int cnt =0; vector rrr; for (int pos=0; pos= r.list.size()) done = true; } } else { done = true; break; } } if (cc == rrr.size()) cnt++; } cout << cnt << endl; } #if 0 int ok = 0; for (const std::string& f : filters) { bool correct = true; for (int i = 0; i < f.size(); ++i) { if (value[i] == '?') continue; if (value[i] != f[i]) { correct = false; break; } } ok += correct; } std::cout << ok << "\n"; } #endif return 0; }