#include <bits/stdc++.h>
using namespace std;
mt19937 rnd(time(0));
constexpr uint64_t mod = (1ull << 61) - 1;
const unsigned long long bas = rnd() % 10 + 27;
inline uint64_t mult(uint64_t a, uint64_t b) {
  uint64_t l1 = (uint32_t)a, h1 = a >> 32, l2 = (uint32_t)b, h2 = b >> 32;
  uint64_t l = l1 * l2, m = l1 * h2 + l2 * h1, h = h1 * h2;
  uint64_t ret =
      (l & mod) + (l >> 61) + (h << 3) + (m >> 29) + (m << 35 >> 3) + 1;
  ret = (ret & mod) + (ret >> 61);
  ret = (ret & mod) + (ret >> 61);
  return ret - 1;
}
inline unsigned long long add(unsigned long long a, unsigned long long b) {
  if ((a += b) >= mod) a -= mod;
  return a;
}
inline unsigned long long dec(unsigned long long a, unsigned long long b) {
  return add(a, mod - b);
}
bool hasans = 0;
int posL, posR;
char s[500010], t[500010];
int n, m, K, posl[500010], posr[500010];
unsigned long long pw[500010], hs1[500010], hs2[500010];
inline unsigned long long gethash(unsigned long long *hs, int l, int r) {
  return dec(hs[r], mult(hs[l - 1], pw[r - l + 1]));
}
int main() {
  scanf("%d%d%d", &n, &m, &K);
  scanf("%s%s", s + 1, t + 1);
  pw[0] = 1;
  for (int i = 1; i <= n; i++) pw[i] = mult(pw[i - 1], bas);
  for (int i = 1; i <= n; i++) hs1[i] = add(mult(hs1[i - 1], bas), s[i] - 'a');
  for (int i = 1; i <= m; i++) hs2[i] = add(mult(hs2[i - 1], bas), t[i] - 'a');
  for (int L = 1, p = K; L <= m && L <= K; L++) {
    if (p < L) p = L;
    while (p <= n && gethash(hs1, p - L + 1, p) != gethash(hs2, 1, L)) p++;
    if (gethash(hs1, K - L + 1, K) == gethash(hs2, 1, L)) p = K;
    posl[L] = p;
  }
  for (int R = 1, p = n - K + 1; R <= m && R <= K; R++) {
    if (p > n - R + 1) p = n - R + 1;
    while (p > 0 && gethash(hs1, p, p + R - 1) != gethash(hs2, m - R + 1, m))
      p--;
    if (gethash(hs1, n - K + 1, n - K + R) == gethash(hs2, m - R + 1, m))
      p = n - K + 1;
    posr[R] = p;
  }
  for (int i = 1; i < m; i++) {
    if (i > K || m - i > K) continue;
    if (posl[i] == n + 1 || posr[m - i] == 0) continue;
    if (posl[i] < posr[m - i]) {
      hasans = 1;
      posL = posl[i] - K + 1;
      posR = posr[m - i];
      break;
    }
  }
  if (m <= K) {
    for (int i = 1; i <= n - m + 1; i++) {
      if (gethash(hs1, i, i + m - 1) == gethash(hs2, 1, m)) {
        int nR = max(i + m - 1, K);
        if (nR + K - 1 <= n) {
          hasans = 1;
          posL = nR - K + 1;
          posR = nR + 1;
          break;
        }
        int nL = min(i, n - K + 1);
        if (nL > K) {
          hasans = 1;
          posL = nL - K;
          posR = nL;
          break;
        }
      }
    }
  }
  if (hasans) {
    puts("Yes");
    printf("%d %d\n", posL, posR);
  } else {
    puts("No");
  }
  return 0;
}
