//Bismillahir Rahmanir Rahim
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define gcd(a,b) __gcd(a,b)
#define endl '\n'
const int N=2e5+10;
const int inf=1e9;
//const int mod=1000000007;
vector<int>num;
ll dp[60][(1<<10)+2][2][2];
int n;
int base;
string s;
ll call(int pos, int mask, int is_start, int nf, int flag){
if(pos==n){
if(mask==0)
return 0LL;
bool chk=true;
string tmp;
if(flag)
{
if(s[0]=='N')
chk=false;
}
for(int i=1; i<=base; i++)
{
if(mask & (1<<(i-1)))
{
if(s[i]=='N')
chk=false;
}
}
if(chk)
{
return 1LL;
}
else
{
return 0LL;
}
}
if(dp[pos][mask][is_start][nf] != -1)return dp[pos][mask][is_start][nf];
ll res = 0;
int LMT=nf;
if(nf)
LMT=base-1;
else
{
LMT=num[pos];
}
if(is_start==0)
{
for(int dgt=0; dgt<=LMT; dgt++)
{
int f=nf;
if(dgt < LMT) f = 1;
if(dgt==0)
{
res+=call(pos+1, mask, 0, f, 1);
}
else
{
res+=call(pos+1, mask|(1<<(dgt-1)), 0, f, 0);
}
}
}
else
{
for(int dgt=1; dgt<=LMT; dgt++)
{
int f=nf;
if(dgt < LMT) f = 1;
res+=call(pos+1, mask|(1<<(dgt-1)), 0, f, 0);
}
res+=call(pos+1, 0, 1, 1, 0);
}
return dp[pos][mask][is_start][nf]=res;
}
ll solve(ll tmp){
num.clear();
while(tmp)
{
num.push_back(tmp%base);
tmp/=base;
}
n=num.size();
reverse(num.begin(), num.end());
memset(dp, -1, sizeof(dp));
ll res = call(0, 0, 1, 0, 0);
return res;
}
int main(int argc, char const *argv[])
{
/*#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif*/
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(0);
while(1)
{
ll a, b;
cin >> a >> b;
cin >> base >> s;
if(a==-1 && b==-1)
break;
ll ans=solve(b)-solve(a-1);
cout << ans << endl;
}
//fprintf(stderr, "Time: %d ms\n", (int)(clock()*1000.0/CLOCKS_PER_SEC));
return 0;
}
Ly9CaXNtaWxsYWhpciBSYWhtYW5pciBSYWhpbQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZ2NkKGEsYikgX19nY2QoYSxiKQojZGVmaW5lIGVuZGwgJ1xuJwpjb25zdCBpbnQgTj0yZTUrMTA7CmNvbnN0IGludCBpbmY9MWU5OwovL2NvbnN0IGludCBtb2Q9MTAwMDAwMDAwNzsKCnZlY3RvcjxpbnQ+bnVtOwpsbCBkcFs2MF1bKDE8PDEwKSsyXVsyXVsyXTsKaW50IG47CmludCBiYXNlOwpzdHJpbmcgczsKCmxsIGNhbGwoaW50IHBvcywgaW50IG1hc2ssIGludCBpc19zdGFydCwgaW50IG5mLCBpbnQgZmxhZyl7CiAgICAKICAgIGlmKHBvcz09bil7CgkJaWYobWFzaz09MCkKCQkJcmV0dXJuIDBMTDsKCQlib29sIGNoaz10cnVlOwoJCXN0cmluZyB0bXA7CgkJaWYoZmxhZykKCQl7CgkJCWlmKHNbMF09PSdOJykKCQkJCWNoaz1mYWxzZTsKCQl9CgkJCgkJCiAgICAgICAgZm9yKGludCBpPTE7IGk8PWJhc2U7IGkrKykKCQl7CgkJCWlmKG1hc2sgJiAoMTw8KGktMSkpKQoJCQl7CgkJCQlpZihzW2ldPT0nTicpCgkJCQkJY2hrPWZhbHNlOwoJCQl9CQkJCQoJCX0KCgoJCWlmKGNoaykKCQl7CgkJCXJldHVybiAxTEw7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAwTEw7CgkJfQoJCQogICAgfQoKICAgIGlmKGRwW3Bvc11bbWFza11baXNfc3RhcnRdW25mXSAhPSAtMSlyZXR1cm4gZHBbcG9zXVttYXNrXVtpc19zdGFydF1bbmZdOwoJCiAgICBsbCByZXMgPSAwOwoKICAgIGludCBMTVQ9bmY7CgoJaWYobmYpCgkJTE1UPWJhc2UtMTsKCWVsc2UKCXsKCQlMTVQ9bnVtW3Bvc107Cgl9CgoKCWlmKGlzX3N0YXJ0PT0wKQoJewoJCWZvcihpbnQgZGd0PTA7IGRndDw9TE1UOyBkZ3QrKykKCQl7CgkJCWludCBmPW5mOwoJCQlpZihkZ3QgPCBMTVQpIGYgPSAxOyAKCQkJCgkJCWlmKGRndD09MCkKCQkJewoJCQkJcmVzKz1jYWxsKHBvcysxLCBtYXNrLCAwLCBmLCAxKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJlcys9Y2FsbChwb3MrMSwgbWFza3woMTw8KGRndC0xKSksIDAsIGYsIDApOwoJCQl9CgkJfQoJfQoJZWxzZQoJewoJCWZvcihpbnQgZGd0PTE7IGRndDw9TE1UOyBkZ3QrKykKCQl7CgkJCWludCBmPW5mOwoJCQlpZihkZ3QgPCBMTVQpIGYgPSAxOyAKCQkJCgkJCXJlcys9Y2FsbChwb3MrMSwgbWFza3woMTw8KGRndC0xKSksIDAsIGYsIDApOwoJCX0KCQlyZXMrPWNhbGwocG9zKzEsIDAsIDEsIDEsIDApOwoJfQoJCglyZXR1cm4gZHBbcG9zXVttYXNrXVtpc19zdGFydF1bbmZdPXJlczsKfQoKbGwgc29sdmUobGwgdG1wKXsKICAgIG51bS5jbGVhcigpOwogICAgCgl3aGlsZSh0bXApCgl7CgkJbnVtLnB1c2hfYmFjayh0bXAlYmFzZSk7CgkJdG1wLz1iYXNlOwoJfQoKCW49bnVtLnNpemUoKTsKCglyZXZlcnNlKG51bS5iZWdpbigpLCBudW0uZW5kKCkpOwoJbWVtc2V0KGRwLCAtMSwgc2l6ZW9mKGRwKSk7CgogICAgbGwgcmVzID0gY2FsbCgwLCAwLCAxLCAwLCAwKTsKICAgIHJldHVybiByZXM7Cn0KCmludCAgbWFpbihpbnQgYXJnYywgY2hhciBjb25zdCAqYXJndltdKQp7CgkvKiNpZm5kZWYgT05MSU5FX0pVREdFCgkJZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwoJCWZyZW9wZW4oIm91dHB1dC50eHQiLCJ3IixzdGRvdXQpOwoJI2VuZGlmKi8KCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZShOVUxMKTsKCWNvdXQudGllKDApOwoKCXdoaWxlKDEpCgl7CgkJbGwgYSwgYjsKCQljaW4gPj4gYSA+PiBiOwoKCQljaW4gPj4gYmFzZSA+PiBzOwoKCQlpZihhPT0tMSAmJiBiPT0tMSkKCQkJYnJlYWs7CgoJCQoJCWxsIGFucz1zb2x2ZShiKS1zb2x2ZShhLTEpOwoKIAoJCWNvdXQgPDwgYW5zIDw8IGVuZGw7Cgl9CQoKCS8vZnByaW50ZihzdGRlcnIsICJUaW1lOiAlZCBtc1xuIiwgKGludCkoY2xvY2soKSoxMDAwLjAvQ0xPQ0tTX1BFUl9TRUMpKTsKCglyZXR1cm4gMDsKfQ==