#include using namespace std; using ll=long long; using ld=double; using vll=vector; #define FOR(i,a,b) for(ll i=a;i<(ll)b;++i) #define ROF(i,a,b) for(ll i=a;i>=(ll)b;--i) #define PB push_back #define INF (1ll<<61) string A,B; ll dp[10001][1001]; ll editDistance(ll a,ll b){ if(dp[a][b]!=-1)return dp[a][b]; if(a>=A.size())return dp[a][b]=max(0ll,(ll)B.size()-b); // +-1 if(b>=B.size())return dp[a][b]=max(0ll,(ll)A.size()-a); // +-1 ll nothing=INF; if (A[a]==B[b])nothing=editDistance(a+1,b+1)-1; ll delA=editDistance(a+1,b); ll delB=editDistance(a,b+1); ll expA=INF; if('0'<=A[a]&&A[a]<='9'){ ll val=A[a]-'0'; expA=editDistance(a+1,b+val); } ll expB=INF; if('0'<=B[b]&&B[b]<='9'){ ll val=B[b]-'0'; expB=editDistance(a+val,b+1); } return dp[a][b]=1+min(nothing,min(delA,min(delB,min(expA,expB)))); } int main(){ ios::sync_with_stdio(0);cin.tie(0); cin>>A>>B; memset(dp,-1,sizeof dp); printf("%lld\n",editDistance(0,0)); // FOR(i,0,A.size()){FOR(j,0,B.size()){printf("%lld %lld: %lld\n",i,j,dp[i][j]);}puts("");} return 0; }