#include <bits/stdc++.h>
void read(int &x) {
  x = 0;
  int flag = 1;
  char ch = ' ';
  while (ch < '0' || ch > '9') {
    if (ch == '-') flag = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  x *= flag;
}
void read(long long &x) {
  x = 0;
  int flag = 1;
  char ch = ' ';
  while (ch < '0' || ch > '9') {
    if (ch == '-') flag = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  x *= flag;
}
using namespace std;
const int maxn = 500010;
string s, a, b;
int len, z[maxn * 2], pre[maxn], suf[maxn], n, m, k;
vector<int> cand[maxn];
void calc() {
  s = b + '$' + a;
  int l = 0, r = 0;
  len = s.size() - 1;
  for (int i = 1; i <= len - 1; i++)
    if (r < i) {
      l = r = i;
      for (; r < len && s[r] == s[r - i]; r++)
        ;
      r--, z[i] = r - l + 1;
    } else {
      int k = i - l;
      if (z[k] < r - i + 1)
        z[i] = z[k];
      else {
        l = i;
        for (; r < len && s[r] == s[r - i]; r++)
          ;
        r--, z[i] = r - l + 1;
      }
    }
}
bool check(int x, int y) {
  return x >= 0 && x + k <= n && y >= 0 && y + k <= n && x + k <= y;
}
int main() {
  read(n), read(m), read(k);
  cin >> a >> b;
  calc();
  for (int i = m + 1; i <= m + n; i++) pre[i - m - 1] = z[i];
  reverse(a.begin(), a.end());
  reverse(b.begin(), b.end());
  calc();
  for (int i = m + 1; i <= m + n; i++) suf[n - (i - m)] = z[i];
  for (int i = n - 1; i >= 0; i--) cand[suf[i]].push_back(i);
  for (int i = 0; i <= n - 1; i++)
    if (pre[i] == m) {
      int tmp = max(i + m - 2 * k, 0);
      if (check(tmp, tmp + k)) {
        printf("Yes\n%d %d\n", tmp + 1, tmp + k + 1);
        return 0;
      }
    }
  int pos = m;
  for (int i = 0; i <= n - 1; i++) {
    if (min(pre[i], k) <= min(pre[i - 1], k)) continue;
    while (pos >= m - min(pre[i], k)) {
      while (!cand[pos].empty()) {
        int r = cand[pos][cand[pos].size() - 1];
        cand[pos].pop_back();
        int l = r - (m - min(pre[i], k)) + 1;
        if (check(i + min(pre[i], k) - k, l)) {
          printf("Yes\n%d %d\n", i + min(pre[i], k) - k + 1, l + 1);
          return 0;
        }
      }
      pos--;
    }
  }
  puts("No");
  return 0;
}
