//KZNS
#include <fstream>
#include <cstring>
#include <set>
using namespace std;
//
ifstream fin ("stringa.in");
ofstream fout ("stringa.out");
const int Nmax = 100003;
//
int N, K;
string S[Nmax];
set<string> mpb[Nmax];
//
void fir() {
fin >> N >> K;
for (int i = 0; i < N; i++) {
fin >> S[i];
for (int j = 0; j < S[i].size(); j++)
for (int k = 1; k + j - 1 <S[i].size(); k++)
mpb[i].insert(S[i].substr(j,k));
}
}
//
int main() {
fir();
int ks;
int ed;
for (int i = 0; i < N; i++) {
ed = 0;
for (int j = 0; j < S[i].size(); j++) {
for (int k = 1; k + j - 1 <S[i].size(); k++) {
ks = 0;
for (int ii = 0; ii < N; ii++) {
if (ii == i)
continue;
if (mpb[i].count(S[i].substr(j,k)))
ks++;
}
if (ks >= K)
ed++;
}
}
fout << ed << ' ';
}
return 0;
}
//UBWH