#include <bits/stdc++.h>
using namespace std;
int n, m, K;
char s1[500005], s2[500005];
int Next[500005];
int ans1[500005], ans2[500005];
int num[500005];
void GetNext() {
  Next[1] = 0;
  int j = 1, k = 0;
  while (j <= m) {
    if (k == 0 || s2[j] == s2[k]) {
      j++;
      k++;
      Next[j] = k;
    } else
      k = Next[k];
  }
}
int main() {
  scanf("%d %d %d", &n, &m, &K);
  scanf("%s", s1 + 1);
  scanf("%s", s2 + 1);
  GetNext();
  int i = 1, j = 1;
  while (i <= n) {
    if (j == 0 || s1[i] == s2[j]) {
      int p = j;
      while (ans1[p] == 0 && i >= K && p > 0) {
        ans1[p] = i;
        p = Next[p + 1] - 1;
      }
      i++;
      j++;
    } else
      j = Next[j];
  }
  i = 1, j = 1;
  while (i <= n + 1) {
    if (j == m + 1 && K >= m) {
      if (i - 1 <= n - K) {
        printf("Yes\n");
        printf("%d %d\n", max(1, i - m), n - K + 1);
        return 0;
      } else {
        if (i - m > K) {
          printf("Yes\n");
          printf("1 %d\n", min(n - K + 1, i - m));
          return 0;
        }
      }
    }
    if (j == 0 || s1[i] == s2[j]) {
      i++;
      j++;
    } else
      j = Next[j];
  }
  for (int i = 1; i <= n / 2; i++) {
    char c;
    c = s1[i];
    s1[i] = s1[n - i + 1];
    s1[n - i + 1] = c;
  }
  for (int i = 1; i <= m / 2; i++) {
    char c;
    c = s2[i];
    s2[i] = s2[m - i + 1];
    s2[m - i + 1] = c;
  }
  memset(Next, 0, sizeof(Next));
  GetNext();
  i = 1, j = 1;
  while (i <= n) {
    if (j == 0 || s1[i] == s2[j]) {
      int p = j;
      while (ans2[p] == 0 && i >= K && p > 0) {
        ans2[p] = i;
        p = Next[p + 1] - 1;
      }
      i++;
      j++;
    } else
      j = Next[j];
  }
  for (int i = 1; i < m && i <= K; i++) {
    if (ans1[i] == 0 || ans2[m - i] == 0) continue;
    if (ans1[i] + ans2[m - i] <= n && m - i <= K) {
      printf("Yes\n");
      printf("%d %d", ans1[i] - K + 1, n - ans2[m - i] + 1);
      return 0;
    }
  }
  printf("No");
}
