#include <bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;
const int N=2e5+10;
const int inf=1e18;
const int mod=1e9+7;
pair<int,int> r[N],c[N];
int cnt[38][38][38][38];
signed main() {
ios_base::sync_with_stdio(NULL);
cin.tie(NULL);
int T=1;
// cin>>T;
while(T--) {
int n,k;
cin>>n>>k;
string s[n+1];
for(int i=1;i<=n;i++) {
cin>>s[i];
int ch1=0,ch2,ch3,ch4;
if(s[i][0]>='a') ch1=s[i][0]-'a'+10;
else ch1=s[i][0]-'0';
if(s[i][1]>='a') ch2=s[i][1]-'a'+10;
else ch2=s[i][1]-'0';
if(s[i][2]>='a') ch3=s[i][2]-'a'+10;
else ch3=s[i][2]-'0';
if(s[i][3]>='a') ch4=s[i][3]-'a'+10;
else ch4=s[i][3]-'0';
cnt[ch1][ch2][ch3][38]++;
cnt[ch1][ch2][38][ch4]++;
cnt[ch1][38][ch3][ch4]++;
cnt[38][ch2][ch3][ch4]++;
// cout<<ch1<<' '<<ch2<<' '<<ch3<<' '<<ch4<<endl;
}
// if(n<=2000) {
// int ans=0;
// for(int i=1;i<=n;i++) {
// for(int j=i+1;j<=n;j++) {
// if(i==j) continue;
// int cnt=0;
// for(int l=0;l<4;l++) {
// if(s[i][l]!=s[j][l]) cnt++;
// }
// if(cnt==k) ans++;
// }
// }
// cout<<ans<<"\n";
// }
int ans=0;
for(int i=1;i<=n;i++) {
int ch1=0,ch2,ch3,ch4;
if(s[i][0]>='a') ch1=s[i][0]-'a'+10;
else ch1=s[i][0]-'0';
if(s[i][1]>='a') ch2=s[i][1]-'a'+10;
else ch2=s[i][1]-'0';
if(s[i][2]>='a') ch3=s[i][2]-'a'+10;
else ch3=s[i][2]-'0';
if(s[i][3]>='a') ch4=s[i][3]-'a'+10;
else ch4=s[i][3]-'0';
ans+=cnt[ch1][ch2][ch3][38]+
cnt[ch1][ch2][38][ch4]+
cnt[ch1][38][ch3][ch4]+
cnt[38][ch2][ch3][ch4]-4;
}
cout<<ans<<"\n";
}
}
// 1 2 3 4 5 6 7
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |