#include <bits/stdc++.h>
using namespace std;
int n, m, k, w;
char ax[500005];
char bx[500005];
int Next[500005], next2[500005];
int sig[500005][2];
int hh[500005][2];
bool tepan() {
  int i, j, a, b;
  for (i = 1; i <= n; i++) {
    if (sig[i][0] == m) {
      w = max(1, i - k + 1);
      w = min(w, n - 2 * k + 1);
      return 1;
    }
  }
  return 0;
}
void kmp() {
  int i, j = 0, a, b;
  for (i = 2; i <= m; i++) {
    while (j && bx[i] != bx[j + 1]) j = Next[j];
    if (bx[i] == bx[j + 1]) j++;
    Next[i] = j;
  }
  j = 0;
  for (i = 1; i <= n; i++) {
    while (j && ax[i] != bx[j + 1]) j = Next[j];
    if (bx[j + 1] == ax[i]) j++;
    sig[i][0] = j;
  }
  next2[m + 1] = m + 1;
  next2[m] = m + 1;
  j = m + 1;
  for (i = m - 1; i; i--) {
    while (j != m + 1 && bx[i] != bx[j - 1]) j = next2[j];
    if (bx[i] == bx[j - 1]) j--;
    next2[i] = j;
  }
  j = m + 1;
  for (i = n; i; i--) {
    while (j != m + 1 && ax[i] != bx[j - 1]) j = next2[j];
    if (bx[j - 1] == ax[i]) j--;
    sig[i][1] = j;
  }
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  int i, j, a, b;
  scanf("%s%s", ax + 1, bx + 1);
  kmp();
  if (k >= m && tepan()) {
    printf("Yes\n%d %d", w, n - k + 1);
    return 0;
  }
  for (i = 1; i <= n - k + 1; i++) hh[sig[i][1]][1] = i;
  for (i = n; i >= k; i--) hh[sig[i][0]][0] = i;
  for (i = n; i; i--) {
    if (hh[i][0]) hh[Next[i]][0] = min(hh[Next[i]][0], hh[i][0]);
  }
  for (i = 1; i <= n; i++)
    if (hh[i][1]) hh[next2[i]][1] = max(hh[next2[i]][1], hh[i][1]);
  int x;
  if (k >= m)
    x = m;
  else
    x = k + 1;
  for (i = 1; i < x; i++) {
    if (m - i > k) continue;
    j = 1 + i;
    if (hh[i][0] && hh[j][1] && hh[i][0] < hh[j][1]) {
      printf("Yes\n%d %d", hh[i][0] - k + 1, hh[j][1]);
      return 0;
    }
  }
  printf("No");
  return 0;
}
