//使用大根堆会有2个WA
//用数组然后排序才能全AC
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct player
{
int sc;
priority_queue<int> st;
};
signed main()
{
int maxx=-1;
int n,m;
string s;
cin>>n>>m;
vector<int> v(m);
vector<player> p(n+1);
for(int i=0;i<m;i++) cin>>v[i];
for(int i=1;i<=n;i++)
{
int scc=0;
cin>>s;
scc+=i;
for(int j=0;j<m;j++)
{
if(s[j]=='o') scc+=v[j];
else
{
p[i].st.push(v[j]);
}
}
maxx=max(maxx,scc);
p[i].sc=scc;
}
for(int i=1;i<=n;i++)
{
if(p[i].sc==maxx)
{
cout<<0<<endl;
continue;
}
bool flag=true;
int con=0;
int sum=p[i].sc;
do
{
if(sum>maxx)
{
flag=false;
break;
}
con++;
sum+=p[i].st.top();
p[i].st.pop();
}
while(!p[i].st.empty());
if(!flag) cout<<con<<endl;
}
}