#include #define FOR(i, a, b) for (ll i = (a); i < (b); i++) #define RFOR(i, a, b) for (ll i = (b)-1; i >= (a); i--) #define rep(i, n) for (ll i = 0; i < (n); i++) #define rep1(i, n) for (ll i = 1; i <= (n); i++) #define rrep(i, n) for (ll i = (n)-1; i >= 0; i--) #define pb push_back #define mp make_pair #define fst first #define snd second #define show(x) cout << #x << " = " << x << endl #define chmin(x, y) x = min(x, y) #define chmax(x, y) x = max(x, y) #define pii pair #define vi vector using namespace std; template ostream& operator<<(ostream& o, const pair& p) { return o << "(" << p.first << "," << p.second << ")"; } template ostream& operator<<(ostream& o, const vector& vc) { o << "sz = " << vc.size() << endl << "["; for (const T& v : vc) o << v << ","; o << "]"; return o; } using ll = long long; constexpr ll MOD = 1000000007; ll gcd(ll n, ll m) { if (n % m == 0) { return m; } else if (m % n == 0) { return n; } else if (n > m) { return gcd(n % m, m); } else { return gcd(m % n, n); } } int main() { ll N, M; cin >> N >> M; const ll g = gcd(N, M); N /= g; M /= g; while (M % 10 == 0) { M /= 10; } if (M % 2 == 0) { while (M % 2 == 0) { M /= 2; } if (M != 1) { cout << -1 << endl; return 0; } cout << 5 << endl; } else if (M % 5 == 0) { N = N % 5; while (M % 5 == 0) { M /= 5; N = (N * 2) % 10; } if (M != 1) { cout << -1 << endl; return 0; } cout << N << endl; } else if (M == 1) { while (N % 10 == 0) { N /= 10; } cout << N % 10 << endl; } else { cout << -1 << endl; } return 0; }