#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const int INF = 1e8;
bool subsetLetters(string& c, string& a) {
  set<char> lettersA;
  long long lenA = a.size();
  for (long long i = 0; i < lenA; i++) lettersA.insert(a[i]);
  long long lenC = c.size();
  for (long long i = 0; i < lenC; i++)
    if (!lettersA.count(c[i])) return false;
  return true;
}
long long calcLen(long long b, long long d, string& a, string& c,
                  long long start) {
  string manyA = "";
  for (long long times = 0; times < 128; times++) manyA += a;
  long long lenC = c.size();
  long long posInC = 0;
  long long posInManyA = start;
  while (posInC < lenC) {
    while (manyA[posInManyA] != c[posInC]) posInManyA++;
    posInC++;
    posInManyA++;
  }
  return posInManyA - start;
}
int main() {
  long long b, d;
  cin >> b >> d;
  string a;
  cin >> a;
  string c;
  cin >> c;
  if (!subsetLetters(c, a)) {
    cout << 0 << endl;
    return 0;
  }
  long long lenA = a.size();
  vector<long long> l(lenA, -1);
  for (long long start = 0; start < lenA; start++)
    l[start] = calcLen(b, d, a, c, start);
  long long lenW = lenA * b;
  map<long long, pair<long long, long long> > mods;
  long long actualPos = 0;
  long long res = 0;
  bool periodDone = false;
  while (actualPos + l[actualPos % lenA] - 1 <= lenW - 1) {
    if (periodDone) {
      actualPos = actualPos + l[actualPos % lenA];
      res++;
    } else if (mods.count(actualPos % lenA)) {
      pair<long long, long long> vezAnt_posAnt = mods[actualPos % lenA];
      long long vezAnterior = vezAnt_posAnt.first;
      long long posAnterior = vezAnt_posAnt.second;
      long long vezActual = res;
      long long posActual = actualPos;
      long long lenPeriodo = posActual - posAnterior;
      long long cEnPeriodo = vezActual - vezAnterior;
      long long periodosMasQueEntran = (lenW - posActual) / lenPeriodo;
      actualPos = posActual + periodosMasQueEntran * lenPeriodo;
      res += periodosMasQueEntran * cEnPeriodo;
      periodDone = true;
    } else {
      mods[actualPos % lenA] = make_pair(res, actualPos);
      actualPos = actualPos + l[actualPos % lenA];
      res++;
    }
  }
  res /= d;
  cout << res << endl;
  return 0;
}
