#include<bits/stdc++.h>
#define fi first
#define se second
#define int long long
using namespace std;
using ll = long long;
using ii = pair<int, int>;
using aa = array<int,3>;
const int N = 1e5;
const int INF = 1e9;
int S[N*4+5],lz[N*4+5];
void push(int id,ll l,ll r) {
    if(lz[id]!=-1) {
        ll m=(l+r)/2;
        S[id*2]=lz[id]*(m-l+1);
        S[id*2+1]=lz[id]*(r-m);
        lz[id*2]=lz[id];
        lz[id*2+1]=lz[id];
        lz[id]=-1;
    }
}
void update(int id,ll l,ll r,int u,int v,ll x) {
    if(v < l || r < u) return;
    if(u <=l && r <= v) {
        lz[id]=x;
        S[id]=x*(r-l+1);
        return;
    }
    push(id,l,r);
    int m=(l+r)/2;
    update(id*2,l,m,u,v,x);
    update(id*2+1,m+1,r,u,v,x);
    S[id]=S[id*2]+S[id*2+1];
}
int get(int id,int l,int r,int u,int v) {
    if(v < l || r < u) return 0;
    if(u <=l && r <=v) {
        return S[id];
    }
    push(id,l,r);
    int m=(l+r)/2;
    ll t=get(id*2,l,m,u,v);
    ll t1=get(id*2+1,m+1,r,u,v);
    return t+t1;
}
vector<int> solve(string s) {
    vector<int> res;
    int n=s.size();
    int sz=1;
    for(int i=1;i<=4*N;i++) lz[i]=-1;
    update(1,1,N,1,N,0);
    update(1,1,N,1,1,1);
    for(int i=0;i<n;i++) {
        if(s[i]=='1') {
            sz++;
        }
        if(s[i]=='2') {
            sz++;
            update(1,1,N,sz,sz,1);
        }
        if(s[i]=='U') {
            update(1,1,N,sz,sz,0);
            sz--;
        }
        if(s[i]=='L') {
            int l=1,r=sz;
            int t=0;
            int cur=get(1,1,N,1,sz);
            while(l<=r) {
                int mid=(l+r)/2;
                if(get(1,1,N,1,mid)==cur) {
                    r=mid-1;
                    t=mid;
                }
                else l=mid+1;
            }
            update(1,1,N,t,t,0);
            if(t<sz)update(1,1,N,t+1,sz,1);
        }
        if(s[i]=='R') {
            int l=1,r=sz-1;
            int t=0;
            int cur=get(1,1,N,1,sz);
            while(l<=r) {
                int mid=(l+r)/2;
                if(cur-get(1,1,N,1,mid)!=sz-mid) {
                    l=mid+1;
                    t=mid+1;
                }
                else r=mid-1;
            }
            update(1,1,N,t,t,1);
            if(t<sz) update(1,1,N,t+1,sz,0);
        }
    }
    for(int i=1;i<=sz;i++){
        res.push_back(get(1,1,N,i,i));
        //cout << *res.rbegin();
    }
    //cout << endl;
    return res;
}
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    string a,b;
    cin >> a >> b;
    vector<int> posx,posy;
    posx=solve(a);
    posy=solve(b);
    if(posx.size()>posy.size()) swap(posx,posy);
    int ans=1e9;
    int dif=posy.size()-posx.size();
    for(int i=0;i<posx.size();i++) {
        if(i==posx.size()-1) {
            if(posx[i]==posy[i]) cout << dif; else dif+1;
            return 0;
        }
        if(posx[i]!=posy[i]) {
            dif=posy.size()+posx.size();
            int cur=0;
            while(i<posx.size()) {
                cur=cur*2+posx[i]-posy[i];
                ans=min(ans,dif+abs(cur)-2*i-2);
                if(cur==3) break;
                i++;
            }
            cout << ans;
            return 0;
        }
    }
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |