#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
int a,b,aa,bb,c,k,l,sol;
int t[20],v[20];
int dp[2][20][20];
int memo(int t[20],int n)
{
memset(dp,0,sizeof(dp)); dp[1][0][0]=1;
for (int i=1;i<=n;i++) {
for (int j=0;j<n;j++) {
for (int l=(i==1)? 1:0;l<=9;l++)
if (l==c) {
dp[0][i][j+1]+=dp[0][i-1][j];
if (l<t[i]) dp[0][i][j+1]+=dp[1][i-1][j];
if (l==t[i]) dp[1][i][j+1]+=dp[1][i-1][j];
} else {
dp[0][i][j]+=dp[0][i-1][j];
if (l<t[i]) dp[0][i][j]+=dp[1][i-1][j];
if (l==t[i]) dp[1][i][j]+=dp[1][i-1][j];
}
}
}
int sol=0;
for (int i=k;i<=n;i++) sol=sol+dp[0][n][i]+dp[1][n][i];
return sol;
}
int main()
{
freopen("cifre.in","r",stdin);
freopen("cifre.out","w",stdout);
scanf("%d %d %d %d",&a,&b,&c,&k);
int l=0; aa=a; bb=b;
while (b>0) { l++; t[l]=b%10; b=b/10; }
reverse(t+1,t+l+1);
sol=sol+memo(t,l);
if (c==0 && aa==0) sol=1;
for (int i=1;i<l;i++) {
for (int j=1;j<=i;j++) v[j]=9;
sol=sol+memo(v,i);
}
if (aa<=1) { printf("%.5f",(1.*sol)/(bb-aa+1)); return 0; }
l=0;
while (a>0) { l++; t[l]=a%10; a=a/10; }
reverse(t+1,t+l+1); int b=l;
while (b>0 && t[b]==0) { t[b]=9; b--; }
t[b]--;
sol=sol-memo(t,l);
for (int i=1;i<l;i++) {
for (int j=1;j<=i;j++) v[j]=9;
sol=sol-memo(v,i);
}
printf("%.5f",(1.*sol)/(bb-aa+1));
return 0;
}