#include <bits/stdc++.h>
using namespace std;
const int mxn = 5e5 + 5;
char s[mxn], t[mxn];
int n, m, k, nxt[mxn], a[mxn], b[mxn];
inline void calc(int* a) {
  for (int i = 2, j = 0; i <= m and i <= k; nxt[i++] = j) {
    for (; j and t[j + 1] != t[i]; j = nxt[j])
      ;
    if (t[j + 1] == t[i]) ++j;
  }
  for (int i = 1, j = 0; i <= n; ++i) {
    for (; j and (j == k or t[j + 1] != s[i]); j = nxt[j])
      ;
    if (t[j + 1] == s[i]) ++j;
    if (j == m) {
      if (i < k * 2)
        printf("Yes\n1 %d\n", k + 1);
      else
        printf("Yes\n%d %d", i - k - k + 1, i - k + 1);
      exit(0);
    }
    if (i - k > -1) a[j] = min(a[j], i);
  }
  for (int i = m; i; --i) a[nxt[i]] = min(a[nxt[i]], a[i]);
}
int main() {
  scanf("%d%d%d%s%s", &n, &m, &k, s + 1, t + 1);
  memset(a, 63, sizeof(a)), calc(a);
  for (int i = 1; i < n - i + 1; ++i) swap(s[i], s[n - i + 1]);
  for (int i = 1; i < m - i + 1; ++i) swap(t[i], t[m - i + 1]);
  memset(b, 63, sizeof(b)), calc(b);
  for (int i = 0; i <= m; ++i)
    if (a[i] <= n and b[m - i] <= n and a[i] < n - b[m - i] + 1)
      return printf("Yes\n%d %d", a[i] - k + 1, n - b[m - i] + 1), 0;
  puts("No");
}
