#include <bits/stdc++.h>
using namespace std;
char s[500010], t[500010], d[500010], g[500010];
int lcp[500010], a[500010], b[500010], lcp1[500010];
int mxx[500010];
bool l[500010];
int main() {
  int n, m, k;
  while (cin >> n >> m >> k) {
    scanf("%s%s", s, t);
    for (int i = n; i >= 1; --i) {
      s[i] = s[i - 1];
      d[i] = s[i];
    }
    for (int i = m; i > 0; --i) {
      t[i] = t[i - 1];
      g[i] = t[i];
    }
    reverse(d + 1, d + n + 1);
    reverse(g + 1, g + m + 1);
    int tmp = 0;
    lcp[1] = 0;
    for (int i = 2; i <= m; ++i) {
      tmp = lcp[i - 1];
      while (1) {
        if (t[tmp + 1] == t[i]) {
          lcp[i] = tmp + 1;
          break;
        }
        if (tmp == 0) {
          lcp[i] = 0;
          break;
        }
        tmp = lcp[tmp];
      }
    }
    tmp = 0;
    for (int i = 1; i <= n; ++i) {
      while (1) {
        if (s[i] == t[tmp + 1]) {
          ++tmp;
          break;
        }
        if (tmp == 0) {
          break;
        }
        tmp = lcp[tmp];
      }
      a[i] = tmp;
      if (tmp == m) tmp = lcp[tmp];
    }
    lcp1[1] = 0;
    for (int i = 2; i <= m; ++i) {
      tmp = lcp1[i - 1];
      while (1) {
        if (g[tmp + 1] == g[i]) {
          lcp1[i] = tmp + 1;
          break;
        }
        if (tmp == 0) {
          lcp1[i] = 0;
          break;
        }
        tmp = lcp1[tmp];
      }
    }
    tmp = 0;
    for (int i = 1; i <= n; ++i) {
      while (1) {
        if (d[i] == g[tmp + 1]) {
          ++tmp;
          break;
        }
        if (tmp == 0) {
          break;
        }
        tmp = lcp1[tmp];
      }
      b[i] = tmp;
      if (tmp == m) tmp = lcp1[tmp];
    }
    for (int i = 0; i <= n; ++i) {
      l[i] = 0;
      mxx[i] = 0;
    }
    mxx[0] = n - k + 1;
    for (int i = k; i <= n; ++i) {
      tmp = b[i];
      while (!l[tmp]) {
        if (tmp <= k) {
          mxx[tmp] = n - i + 1;
        }
        l[tmp] = 1;
        tmp = lcp1[tmp];
      }
    }
    for (int i = 0; i <= n; ++i) l[i] = 0;
    int rest, ans = 0, ans1, ans2;
    for (int i = 1; i <= n - k; ++i) {
      if (a[i] <= k) {
        if (a[i] >= m) {
          ans = 1;
          ans1 = max(1, i - k + 1);
          ans2 = ans1 + k;
          break;
        }
      }
    }
    for (int i = 1; i <= n - k; ++i) {
      if (b[i] <= k) {
        if (b[i] >= m) {
          ans = 1;
          ans2 = min(n - k + 1, n - i + 1);
          ans1 = ans2 - k;
          break;
        }
      }
    }
    if (ans) {
      cout << "Yes" << endl;
      cout << ans1 << " " << ans2 << endl;
      continue;
    }
    for (int i = k; i <= n - k; ++i) {
      tmp = a[i];
      while (!l[tmp]) {
        if (tmp <= k) {
          rest = m - tmp;
          if (mxx[rest] > i) {
            ans = 1;
            ans1 = i - k + 1;
            ans2 = mxx[rest];
            break;
          }
        }
        l[tmp] = 1;
        tmp = lcp[tmp];
      }
    }
    if (ans) {
      cout << "Yes" << endl;
      cout << ans1 << " " << ans2 << endl;
    } else {
      cout << "No" << endl;
    }
  }
  return 0;
}
