#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define MAX 100010
int x,y;
char str[MAX];
int getfinal(int e)
{
for(int i=e; i>=0; i--)
{
if(str[i]=='1')
return i;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&x,&y);
memset(str,0,sizeof(str));
scanf("%s",str);
int len = strlen(str);
int e=getfinal(len-1);
int ans=0;
for(int i=0; i<e; i++)
{
if(str[i]!='1')
{
if(y<((e-i)*x))
ans+=y;
else
ans+=(e-i)*x;
str[i]='1';
str[e]='0';
e=getfinal(e-1);
}
}
printf("%d\n",ans);
}
return 0;
}
#include <cstdio>
#include <cstring>
using namespace std;
#define MAX 100010
int x,y;
char str[MAX];
int getfinal(int e)
{
for(int i=e; i>=0; i--)
{
if(str[i]=='1')
return i;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&x,&y);
memset(str,0,sizeof(str));
scanf("%s",str);
int len = strlen(str);
int e=getfinal(len-1);
int ans=0;
for(int i=0; i<e; i++)
{
if(str[i]!='1')
{
if(y<((e-i)*x))
ans+=y;
else
ans+=(e-i)*x;
str[i]='1';
str[e]='0';
e=getfinal(e-1);
}
}
printf("%d\n",ans);
}
return 0;
}