#include <bits/stdc++.h>
using std::reverse;
char s[500500], t[500500];
int nxt[500500], f1[500500], f2[500500];
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  scanf("%s", s + 1);
  scanf("%s", t + 1);
  for (int j = 0, i = 2; i <= m; ++i) {
    while (j && t[i] != t[j + 1]) j = nxt[j];
    if (t[i] == t[j + 1]) ++j;
    nxt[i] = j;
  }
  for (int j = 0, i = 1; i <= n; ++i) {
    while (j && s[i] != t[j + 1] || j == m) j = nxt[j];
    if (s[i] == t[j + 1]) ++j;
    if (j == m) {
      puts("Yes");
      int ans = i - m + 1;
      if (i + k > n) ans = n - 2 * k + 1;
      printf("%d %d\n", ans, ans + k);
      return 0;
    }
    if (i >= k && !f1[j]) {
      f1[j] = i;
      int p = nxt[j];
      while (p && !f1[p]) {
        f1[p] = i;
        if (!p) break;
        p = nxt[p];
      }
    }
  }
  reverse(s + 1, s + 1 + n);
  reverse(t + 1, t + 1 + m);
  for (int j = 0, i = 2; i <= m; ++i) {
    while (j && t[i] != t[j + 1]) j = nxt[j];
    if (t[i] == t[j + 1]) ++j;
    nxt[i] = j;
  }
  for (int j = 0, i = 1; i <= n; ++i) {
    while (j && s[i] != t[j + 1] || j == m) j = nxt[j];
    if (s[i] == t[j + 1]) ++j;
    if (i >= k && !f2[j]) {
      f2[j] = n - i + 1;
      int p = nxt[j];
      while (p && !f2[p]) {
        f2[p] = n - i + 1;
        if (!p) break;
        p = nxt[p];
      }
    }
  }
  for (int i = m - k; i <= k; ++i)
    if (f1[i] && f2[m - i] && f1[i] < f2[m - i]) {
      puts("Yes");
      printf("%d %d\n", f1[i] - k + 1, f2[m - i]);
      return 0;
    }
  puts("No");
  return 0;
}
