#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,k;
long long ans;
struct node{
string s;
long long x;
int len;
bool friend operator < (node a,node b){
if(a.len==b.len) return a.s<b.s;
else return a.len<b.len;
}
}a[N];
int main(){
// freopen("in.in","r",stdin);
// freopen("out.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
string s;cin>>s;
long long x=0;
for(int j=0;j<s.size();j++) x=x*10+s[j]-'0';
a[i]=((node){s,x,s.size()});
}
sort(a+1,a+n+1);
// for(int i=1;i<=n;i++) printf("%d %d\n",a[i].x,a[i].len);
int l=1,r=n;
while(l<r){
long long sum=a[l].x*pow(10,a[r].len)+a[r].x;
if(sum>k) r--;
else if(sum<k){
ans+=r-l;
l++;
}else ans+=r-1,l++,r--;
}
l=1,r=n;
while(l<r){
long long sum=a[l].x+a[r].x*pow(10,a[l].len);
if(sum>k) r--;
else if(sum<=k){
ans+=r-l;
l++;
}else ans+=r-1,l++,r--;
}
printf("%lld",ans);
return 0;
}