#include <iostream>
#include <string>
#include <algorithm>
#include <numeric>
using namespace std;
int n;
string A, B;
long long max_nwd = 1;
// Szybka funkcja obliczająca NWD za pomocą algorytmu Euklidesa
long long gcd(long long a, long long b) {
while (b) {
a %= b;
swap(a, b);
}
return a;
}
void dfs(int idx, long long cur_x, long long cur_y, long long max_possible_x, long long max_possible_y) {
// Jeśli maksymalny możliwy wynik w tej gałęzi nie ma szans przebić obecnego max_nwd, odcinamy poddrzewo
// Górne ograniczenie dla NWD(x, y) to min(x, y)
if (min(max_possible_x, max_possible_y) <= max_nwd) {
return;
}
if (idx == n) {
if (cur_x > 0 && cur_y > 0) {
long long current_nwd = gcd(cur_x, cur_y);
if (current_nwd > max_nwd) {
max_nwd = current_nwd;
}
}
return;
}
int start_a = (A[idx] == '?') ? 0 : (A[idx] - '0');
int end_a = (A[idx] == '?') ? 9 : (A[idx] - '0');
int start_b = (B[idx] == '?') ? 0 : (B[idx] - '0');
int end_b = (B[idx] == '?') ? 9 : (B[idx] - '0');
for (int da = start_a; da <= end_a; ++da) {
long long next_x = cur_x * 10 + da;
long long next_max_x = max_possible_x * 10 + da;
for (int db = start_b; db <= end_b; ++db) {
long long next_y = cur_y * 10 + db;
long long next_max_y = max_possible_y * 10 + db;
dfs(idx + 1, next_x, next_y, next_max_x, next_max_y);
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
if (!(cin >> n >> A >> B)) return 0;
// Obliczamy maksymalne możliwe wartości (gdzie '?' zamieniamy na '9')
long long initial_max_x = 0, initial_max_y = 0;
for (int i = 0; i < n; ++i) {
int da = (A[i] == '?') ? 9 : (A[i] - '0');
int db = (B[i] == '?') ? 9 : (B[i] - '0');
initial_max_x = initial_max_x * 10 + da;
initial_max_y = initial_max_y * 10 + db;
}
dfs(0, 0, 0, initial_max_x, initial_max_y);
cout << max_nwd << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8bnVtZXJpYz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbjsKc3RyaW5nIEEsIEI7CmxvbmcgbG9uZyBtYXhfbndkID0gMTsKCi8vIFN6eWJrYSBmdW5rY2phIG9ibGljemFqxIVjYSBOV0QgemEgcG9tb2PEhSBhbGdvcnl0bXUgRXVrbGlkZXNhCmxvbmcgbG9uZyBnY2QobG9uZyBsb25nIGEsIGxvbmcgbG9uZyBiKSB7CiAgICB3aGlsZSAoYikgewogICAgICAgIGEgJT0gYjsKICAgICAgICBzd2FwKGEsIGIpOwogICAgfQogICAgcmV0dXJuIGE7Cn0KCnZvaWQgZGZzKGludCBpZHgsIGxvbmcgbG9uZyBjdXJfeCwgbG9uZyBsb25nIGN1cl95LCBsb25nIGxvbmcgbWF4X3Bvc3NpYmxlX3gsIGxvbmcgbG9uZyBtYXhfcG9zc2libGVfeSkgewogICAgLy8gSmXFm2xpIG1ha3N5bWFsbnkgbW/FvGxpd3kgd3luaWsgdyB0ZWogZ2HFgsSZemkgbmllIG1hIHN6YW5zIHByemViacSHIG9iZWNuZWdvIG1heF9ud2QsIG9kY2luYW15IHBvZGRyemV3bwogICAgLy8gR8Ozcm5lIG9ncmFuaWN6ZW5pZSBkbGEgTldEKHgsIHkpIHRvIG1pbih4LCB5KQogICAgaWYgKG1pbihtYXhfcG9zc2libGVfeCwgbWF4X3Bvc3NpYmxlX3kpIDw9IG1heF9ud2QpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGlkeCA9PSBuKSB7CiAgICAgICAgaWYgKGN1cl94ID4gMCAmJiBjdXJfeSA+IDApIHsKICAgICAgICAgICAgbG9uZyBsb25nIGN1cnJlbnRfbndkID0gZ2NkKGN1cl94LCBjdXJfeSk7CiAgICAgICAgICAgIGlmIChjdXJyZW50X253ZCA+IG1heF9ud2QpIHsKICAgICAgICAgICAgICAgIG1heF9ud2QgPSBjdXJyZW50X253ZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgaW50IHN0YXJ0X2EgPSAoQVtpZHhdID09ICc/JykgPyAwIDogKEFbaWR4XSAtICcwJyk7CiAgICBpbnQgZW5kX2EgPSAoQVtpZHhdID09ICc/JykgPyA5IDogKEFbaWR4XSAtICcwJyk7CgogICAgaW50IHN0YXJ0X2IgPSAoQltpZHhdID09ICc/JykgPyAwIDogKEJbaWR4XSAtICcwJyk7CiAgICBpbnQgZW5kX2IgPSAoQltpZHhdID09ICc/JykgPyA5IDogKEJbaWR4XSAtICcwJyk7CgogICAgZm9yIChpbnQgZGEgPSBzdGFydF9hOyBkYSA8PSBlbmRfYTsgKytkYSkgewogICAgICAgIGxvbmcgbG9uZyBuZXh0X3ggPSBjdXJfeCAqIDEwICsgZGE7CiAgICAgICAgbG9uZyBsb25nIG5leHRfbWF4X3ggPSBtYXhfcG9zc2libGVfeCAqIDEwICsgZGE7CgogICAgICAgIGZvciAoaW50IGRiID0gc3RhcnRfYjsgZGIgPD0gZW5kX2I7ICsrZGIpIHsKICAgICAgICAgICAgbG9uZyBsb25nIG5leHRfeSA9IGN1cl95ICogMTAgKyBkYjsKICAgICAgICAgICAgbG9uZyBsb25nIG5leHRfbWF4X3kgPSBtYXhfcG9zc2libGVfeSAqIDEwICsgZGI7CgogICAgICAgICAgICBkZnMoaWR4ICsgMSwgbmV4dF94LCBuZXh0X3ksIG5leHRfbWF4X3gsIG5leHRfbWF4X3kpOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CgogICAgaWYgKCEoY2luID4+IG4gPj4gQSA+PiBCKSkgcmV0dXJuIDA7CgogICAgLy8gT2JsaWN6YW15IG1ha3N5bWFsbmUgbW/FvGxpd2Ugd2FydG/Fm2NpIChnZHppZSAnPycgemFtaWVuaWFteSBuYSAnOScpCiAgICBsb25nIGxvbmcgaW5pdGlhbF9tYXhfeCA9IDAsIGluaXRpYWxfbWF4X3kgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBpbnQgZGEgPSAoQVtpXSA9PSAnPycpID8gOSA6IChBW2ldIC0gJzAnKTsKICAgICAgICBpbnQgZGIgPSAoQltpXSA9PSAnPycpID8gOSA6IChCW2ldIC0gJzAnKTsKICAgICAgICBpbml0aWFsX21heF94ID0gaW5pdGlhbF9tYXhfeCAqIDEwICsgZGE7CiAgICAgICAgaW5pdGlhbF9tYXhfeSA9IGluaXRpYWxfbWF4X3kgKiAxMCArIGRiOwogICAgfQoKICAgIGRmcygwLCAwLCAwLCBpbml0aWFsX21heF94LCBpbml0aWFsX21heF95KTsKCiAgICBjb3V0IDw8IG1heF9ud2QgPDwgIlxuIjsKCiAgICByZXR1cm4gMDsKfQ==