这是代码
#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<set>
#define repeat(i,x) for(int i=1;i<=x;i++)
using namespace std;
inline int read(){//快读
int x=0;bool k=true;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') k=false;
ch=getchar();
}
while(isdigit(ch)){
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
if(k) return x;
else return ~(x-1);
}
set<int>s;//存放那些名字长度是存在的
string ss;//读名字
vector<int> name[300005];//存排名,二维vector的优化
int n,k,ans;
int main(){
n=read(),k=read();
int maxm=-1;
repeat(i,n){
cin>>ss;
int x=ss.size();
s.insert(x);
maxm=max(maxm,x);
name[x].push_back(i);
}
for(set<int>::iterator it=s.begin();it!=s.end();it++){
int i=*it;
vector<int> &vv=name[i];
for(int j=0;j<vv.size();j++){//遍历
for(int r=j+1;r<vv.size();r++){
if(vv[r]-vv[j]<=k) ans++;
}
}
}
cout<<ans;
}