5309 {
5310 int n;
5311 int m;
5312 int q;
5313 cin >> n >> m >> q;
5314 if(m > n) {
5315 for(int i = 0; i < q; i++) {
5316 cout << 0 << endl;
5317 }
5318 return 0;
5319 }
5320 string s;
5321 string t;
5322 cin >> s >> t;
5323 set<int> sub_end;
5324 set<int> sub_start;
5325 int sub_count = 0;
5326 for(int i = 0; i + m <= n; i++) {
5327 string str = s.substr(i, m);
5328 if(str == t) {
5329 sub_count++;
5330 sub_start.insert(i);
5331 sub_end.insert(i + m - 1);
5332 }
5333 }
5334 vector sub_end_count(n + 1, 0);
5335 vector sub_start_count(n + 1, 0);
5336 int current = 0;
5337 for(int i = 0; i < n + 1; i++) {
5338 if(sub_end.contains(i)) {
5339 current++;
5340 }
5341 sub_end_count[i] = current;
5342 }
5343 current = 0;
5344 for(int i = n; i >= 0; i--) {
5345 if(sub_start.contains(i)) {
5346 current++;
5347 }
5348 sub_start_count[i] = current;
5349 }
5350 for(int i = 0; i < q; i++) {
5351 int l;
5352 int r;
5353 cin >> l >> r;
5354 int ans = sub_end_count[r - 1] - (sub_count - sub_start_count[l - 1]);
5355 cout << max(ans, 0) << endl;
5356 }
5357 return 0;
5358 }
vector< vector< int > > ans