/// You just can't beat the person who never gives up
/// ICPC next year
 
#include<bits/stdc++.h>
using namespace std ;
 
const int N = 2e5+5 ;
 
int n ;
string l ,r ;
string sub(string cur){
    for(int i=cur.size()-1;i>=0;--i){
        if(cur[i]=='1'){
            cur[i] = '0' ;
            break ;
        }
        cur[i] = '1' ;
    }
    return cur ;
}
vector<string> all ;
string work(string a,string b){
    for(int i=0;i<a.size();++i){
        if(a[i]==b[i]) a[i] = '0' ;
        else a[i] = '1' ;
    }
    return a ;
}
int main(){
    cin >> n >> l >> r ;
    if(l[0]=='0' && r[0]=='1'){
        for(int i=0;i<n;++i) printf("1");
        return 0;
    }
    string ans = r ;
    string cur = "" ;
    for(int i=0;i<n;++i){
        if(l[i]=='1') break ;
        if(l[i]=='0' && r[i]=='1'){
            for(int j=i;j<n;++j) cur += '1' ;
            ans = max(ans ,cur);
            break ;
        }
        cur += r[i] ;
    }
    string nw = r ;
    for(int i=0;i<10;++i){
        all.push_back(nw) ;
        if(nw==l) break ;
        nw = sub(nw);
    }
    for(int i=0;i<all.size();++i){
        string here = all[i] ;
        ans = max(ans,here);
        for(int j=i+1;j<all.size();++j){
            here = work(here,all[j]);
            ans = max(ans,here);
        }
    }
    cout << ans << endl ;
    return 0;
}