#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N],zheng[N],fu[N];
char sr[N];
int n,t,z=1,f=1,ans;
bool check(int zz,int ff)
{
if(fu[ff]-zheng[zz]<=(2*t)&&zheng[zz]<=fu[ff])
return true;
else
return false;
}
int main()
{
cin>>n>>t;
for(int i=1;i<=n;i++)
{
cin>>sr[i];
}
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
if(sr[i]=='0')
{
fu[f]=a[i];
f++;
}
else
{
zheng[z]=a[i];
z++;
}
}
f--,z--;
sort(fu+1,fu+f+1);
sort(zheng+1,zheng+z+1);
for(int i=1;i<=f;i++)
{
int ansone=0,anstwo=0;
int l=1,r=z;
while(l<=r)
{
int mid=(l+r)/2;
if(check(mid,i))
{
l=mid+1;
ansone=mid;
}
else
r=mid-1;
}
l=1,r=z;
while(l<=r)
{
int mid=(l+r)/2;
if(check(mid,i))
{
r=mid-1;
anstwo=mid;
}
else
l=mid+1;
}
if(anstwo==0) ans+=ansone-anstwo;
else ans+=ansone-anstwo+1;
}
cout<<ans<<endl;
return 0;
}