#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair <int,int>
set <pii> points,squares;
void addpoints(int x,int y){
points.insert({x,y});
for(int i=-1;i<1;i++) for(int j=-1;j<1;j++) squares.insert({x+i,y+j});
}
int countsquare(int n,int k,string route){
int x=0,y=0;
addpoints(x,y);
for(char c:route){
if(c=='N') x--;
else if(c=='S') x++;
else if(c=='E') y++;
else y--;
addpoints(x,y);
}
if(x==0 && y==0){
int ans=0;
for(pii p:squares){
int c=0;
for(int i=0;i<2;i++) for(int j=0;j<2;j++) c+=points.count({p.first+i,p.second+j});
ans+=(c==4);
}
return ans;
}
map <pii,vector <pii>> mp;
for(pii p:squares){
int stx=x?(p.first%x)+x:p.first;
int sty=y?(p.second%y)+y:p.second;
int mov=!x?(p.second-sty)/y:(p.first-stx)/x;
stx=p.first-mov*x,sty=p.second-mov*y;
mp[{stx,sty}].push_back(p);
}
int ans=0;
for(auto &[p,v]:mp){
vector <vector <int>> last(2,vector <int>(2,-1));
if(x<0 || !x&&y<0) reverse(v.begin(),v.end());
auto [bx,by]=v[0];
vector <pii> ranges;
for(int i=0;i<v.size();i++){
for(int j=0;j<2;j++) for(int l=0;l<2;l++) if(points.count({v[i].first+j,v[i].second+l})) last[j][l]=i;
int min_i=min({last[0][0],last[1][0],last[0][1],last[1][1]});
if(min_i==-1) continue;
int tim=x?(v[i].first-v[min_i].first)/x:(v[i].second-v[min_i].second)/y;
int l=x?(v[i].first-bx)/x:(v[i].second-by)/y;
if(tim<=k) ranges.push_back({l,l+k-tim});
}
int last_r=-1;
for(auto [l,r]:ranges){
if(l<=last_r && r>last_r) ans+=r-last_r;
else if(l>last_r) ans+=r-l;
last_r=max(last_r,r);
}
}
return ans;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n,k;
string route;
cin >> n >> k >> route;
cout << countsquare(n,k,route);
}