#include <bits/stdc++.h>
void rev(char *s, char *e) {
  while (s < e) std::swap(*s++, *e--);
}
int l1, l2, k = 2, R1[500005], R2[500005], flg = -1, fail[500005], i, j, l, L,
            R;
char s1[500005], s2[500005], tt;
void work(int *R, char *o, char *s) {
  tt = s[k];
  s[k] = 0;
  fail[0] = -1;
  for (i = 1, j = -1; s[i]; fail[i++] = j) {
    while (~j && s[i] != s[j + 1]) j = fail[j];
    if (s[i] == s[j + 1]) ++j;
  }
  memset(R, -1, 500005 << 2);
  R[0] = 0;
  for (i = 0, j = -1; o[i]; ++i) {
    while (~j && o[i] != s[j + 1]) j = fail[j];
    if (o[i] == s[j + 1]) ++j;
    if (!~flg)
      if (!s[j + 1]) {
        flg = i;
        return;
      } else
        continue;
    if (i >= k - 1)
      for (int t = j; ~t && !~R[t + 1]; t = fail[t]) R[t + 1] = i - (k - 1);
  }
  s[k] = tt;
}
int main() {
  scanf("%d%d%d%s%s", &l1, &l2, &k, s1, s2);
  if (k >= l2) {
    work(R1, s1, s2);
    if (++flg) {
      if (flg <= k << 1)
        L = 1, R = k + 1;
      else
        R = flg - k + 1, L = R - k;
      return !printf("Yes\n%d %d\n", L, R);
    }
  }
  flg = 0;
  work(R1, s1, s2);
  rev(s1, s1 + l1 - 1);
  rev(s2, s2 + l2 - 1);
  work(R2, s1, s2);
  for (l = l2 - k; l <= k && l <= l2; ++l) {
    if (!~R1[l] || !~R2[l2 - l]) continue;
    L = R1[l], R = l1 - R2[l2 - l] - 1 - (k - 1);
    if (R - L < k) continue;
    return !printf("Yes\n%d %d\n", L + 1, R + 1);
  }
  return !printf("No\n");
}
