#include <bits/stdc++.h>
using namespace std;
template <class T, class U>
void ckmin(T &a, U b) {
  if (a > b) a = b;
}
template <class T, class U>
void ckmax(T &a, U b) {
  if (a < b) a = b;
}
int N, M, K;
vector<int> S, T;
vector<int> str;
vector<int> stov(string s) {
  vector<int> res(((int)(s).size()));
  for (auto i = (0); i < (((int)(s).size())); i++) {
    res[i] = (s[i] - 'a' + 1);
  }
  return res;
}
vector<int> kmp() {
  vector<int> lps(((int)(str).size()));
  lps[0] = 0;
  for (auto i = (1); i < (((int)(str).size())); i++) {
    int j = lps[i - 1];
    while (j && (str[j] != str[i] || j >= K)) j = lps[j - 1];
    lps[i] = (j + (str[j] == str[i]));
  }
  return lps;
}
int32_t main() {
  cout << fixed << setprecision(12);
  cerr << fixed << setprecision(4);
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> N >> M >> K;
  string temps;
  cin >> temps;
  S = stov(temps);
  cin >> temps;
  T = stov(temps);
  str = T;
  str.push_back(0);
  str.insert(str.end(), (S).begin(), (S).end());
  vector<int> fw = kmp();
  reverse((T).begin(), (T).end());
  reverse((S).begin(), (S).end());
  str = T;
  str.push_back(0);
  str.insert(str.end(), (S).begin(), (S).end());
  vector<int> bw = kmp();
  vector<int> dpf(N), dpb(N);
  for (auto i = (M + 1); i < (((int)(str).size())); i++) {
    dpf[i - M - 1] = fw[i];
  }
  for (auto i = (((int)(str).size())) - 1; i >= (M + 1); i--) {
    dpb[((int)(str).size()) - 1 - i] = bw[i];
  }
  for (auto i = (0); i < (N); i++) {
    if (dpf[i] == M) {
      cout << "Yes\n";
      for (auto j = (0); j < (N - 2 * K + 1); j++) {
        if (j <= i - M + 1 && i <= j + 2 * K - 1) {
          cout << j + 1 << ' ' << j + K + 1 << '\n';
          return 0;
        }
      }
      cout << "-1\n";
      return 0;
    }
  }
  vector<int> lt(M + 1);
  fill((lt).begin(), (lt).end(), N + 1);
  lt[0] = K - 1;
  for (auto i = (K - 1); i < (N - K); i++) {
    int j = dpf[i];
    while (j != 0 && lt[j] == N + 1) {
      lt[j] = i;
      j = fw[j - 1];
    }
  }
  for (auto i = (N - K + 1) - 1; i >= (0); i--) {
    int x = dpb[i];
    if (lt[M - x] < i) {
      cout << "Yes\n" << lt[M - x] - K + 2 << ' ' << i + 1 << '\n';
      return 0;
    }
  }
  cout << "No\n";
  return 0;
}
