#include<bits/stdc++.h> using namespace std; int a[100005]; string n,m; long long cnt=0; long long A(long long k1,long long k2){ long long sum=1; for(long long i=k1;i>=k2;i--){ sum*=i; } return sum; } void fun(string &n,string &m){ if(n.size()==m.size()){ return; } else if(n.size()>m.size()){ for(int i=n.size()-m.size();i>=1;i--){ m="0"+m; } } else if(m.size()>n.size()){ for(int i=m.size()-n.size();i>=1;i--){ n="0"+n; } } } int GS(string s){ for(int i=0;i<s.size();i++){ if(s[i]=='0'){ return i+1; } } } void FuBen_DFS(int k){ long long sum=1; for(int i=1;i<=m.size()-1;i++){ int s=m[i]-'0'; cnt+=sum*max(0,min(s,int(m.size()-s))); } } void DFS(int k){ if(k<m.size()){ cnt+=(k-1)*A(k-1,1); } if(k==m.size()){ if(m[0]=='1') FuBen_DFS(m.size()); else{ cnt+=A(k-1,1)*(m[0]-'0'-1); FuBen_DFS(m.size()); } return; } DFS(k+1); } int main(){ cin>>n>>m; fun(n,m); int k=GS(n); DFS(k); cout<<cnt; return 0; }