#include #include #include #include #include using namespace std; vector pi; vector s; int size; void kmp_pi(void) { pi.clear(); pi.resize(size+1, 0); int k = 0; for(int i = 1; i < size; ++i){ while(k > 0 && s[k] != s[i]) k = pi[k-1]; if(s[k] == s[i]) ++k; pi[i] = k; } } int main() { ifstream cin("english.in"); int ncases = 0; while(true){ string line; if(!getline(cin, line)) break; if(ncases) cout << endl; ++ncases; string thetext; while(getline(cin, line)){ if(line == "%%%%%") break; thetext += ' '; thetext += line; } cout << "Case " << ncases << ":" << endl; while(getline(cin, line)){ if(line == "%%%%%") break; int qsize = line.size(); line += "%%%"; s.assign(line.begin(), line.end()); s.insert(s.end(), thetext.begin(), thetext.end()); size = s.size(); kmp_pi(); cout << count(pi.begin(), pi.end(), qsize) << endl; } getline(cin, line); } return 0; }