#include #include #include #include #include #include #include #include #include #include #include #include #include #define repd(i,a,b) for (int i=(int)(a);i<(int)(b);i++) #define rep(i,n) repd(i,0,n) #define all(x) (x).begin(),(x).end() #define mod 1000000007 #define inf 2000000007 #define mp make_pair #define pb push_back typedef long long ll; using namespace std; template inline void output(T a, int p) { if(p) cout << fixed << setprecision(p) << a << "\n"; else cout << a << "\n"; } // end of template bool rep_digit(string &s){ repd(i, 1, s.size()){ if(s[0] != s[i]) return false; } return true; } bool string_mod(string &s, int m){ int res = 0; rep(i, s.size()){ res = (res * 10 + (s[i] - '0')) % m; } return (res == 0) ? true : false; } int gcd(int a, int b){ return (b == 0) ? a : gcd(b, a % b); } int lcm(int a, int b){ return a / gcd(a, b) * b; } int main() { cin.tie(0); ios::sync_with_stdio(0); // source code string s; cin >> s; if(rep_digit(s)){ output(s, 0); return 0; } vector num(10); rep(i, s.size()) num[s[i] - '0']++; int pre_gcd = -1; rep(i, 10) repd(j, i + 1, 10){ if(num[i] > 0 && num[j] > 0){ if(pre_gcd == -1) pre_gcd = 9 * (j - i); else pre_gcd = gcd(pre_gcd, 9 * (j - i)); } } int ret = 1; int p = 2; while(pre_gcd > 1){ int g = 1; while(pre_gcd % p == 0){ pre_gcd /= p; g *= p; if(string_mod(s, g)) ret = lcm(ret, g); } p++; } output(ret, 0); return 0; }