/*
TASK: SOCKS
LANG: C
*/

#include<stdio.h>

    int x,br,k;
    unsigned long pak[32]={0};
    float cena[32]={0},cen=0.0,min=32000.0;

 void rec(int i)
  { 
   x=x+pak[i]; cen+=cena[i];
   if(x>=k) { if(cen<min) min=cen; cen-=cena[i]; x-=pak[i]; return;  }
   rec(i); rec(i-1);
   return;    
  }
int main()
{
    
    int i,j,n,tmp;
            
    pak[0]=1;
    
    scanf("%d %d",&n,&k);
    
    for(i=1;i<=n;i++)
     {
      scanf("%d",&tmp);
      pak[i]=pak[i-1]*tmp;
     }
     
    for(i=0;i<=n;i++)
     {
      scanf("%f",&cena[i]);
     }
     i=n;
     while(pak[i]>k) i--;
     rec(i);  if(cena[1+i]<min && cena[i+1]!=0) min=cena[i+1];
     printf("%.2f",min);
    
    return 0;
}
