#include <iostream>
using namespace std;
//a数组存放部分肥胖基因染色,如果一段基因被之前的基因染色,那么就不需要锁
//b数组用来对肥胖基因全部染色
int n,m,a[1000010],b[1000010];
string s,w;//s存放基因序列,w存放肥胖基因序列
int len,c;//len表示染色长度,c:代表基因锁个数
bool f;//判断基因是否染色
int main(){
cin>>n>>m;
cin>>s>>w;
int i,j;
//循环每个基因字符
for(i = 0;i < n;i++){
//如果当前连续m个字符不是肥胖基因
if(s.substr(i,m) != w) continue;
f = false;//假设该基因没有染色过,那么就需要锁
for(j = i;j < i + m;j++){
//如果该基因染色过,那么可以连带染色
if(a[j] == 1){
f = true;
break;
}
a[j] = 1;//为基因染色
}
//标记染色
for(j = i;j < i + m;j++){
b[j] = 1;
}
//如果基因完全没有染色,则需要1把锁
if(f == false) c++;
}
//计算肥胖基因长度
for(i = 0;i < n;i++){
if(b[i] == 1) len++;
}
cout<<len<<" "<<c<<endl;
}
/**************************************************************
Problem: 1529
User: admin
Language: C++
Result: Accepted
Time:104 ms
Memory:11412 kb
****************************************************************/