#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <set>
#include <string>
#include <deque>
#include <fstream>
#define DN 500005
#define LL long long
using namespace std;
  
typedef pair<int,int> per;
  
int n,k,bst[DN];
string cuv[DN];
deque<int> ind[26];
  
int lst(string s) {
    return s[s.size()-1]-'a';
}
  
int fst(string s) {
    return s[0]-'a';
}
  
int r=1;
  
int main() {
  ifstream f("raci.in");
  ofstream g("raci.out");
  f>>n>>k;
  for(int i=0; i<n; ++i) {
    string s; f>>s;
    cuv[i]+=s[0];
    cuv[i]+=s[s.size()-1];
    //cout<<cuv[i]<<' ';
    }
  for(int i=0; i<n; ++i) {
    int cc=fst(cuv[i]);
    for(;ind[cc].size() && i-ind[cc].front()>k; ind[cc].pop_front());
    if(ind[cc].size()) bst[i]=bst[ind[cc].front()]+1;
    else bst[i]=1;
    r=max(r,bst[i]);
    cc=lst(cuv[i]);
      
    for(;ind[cc].size() && bst[i]>bst[ind[cc].back()];ind[cc].pop_back());
    ind[cc].push_back(i);
  }
  g<<r;
  return 0;
}