#include <bits/stdc++.h>
using namespace std;

#pragma GCC target("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

/* alias */
using ull = unsigned long long;
using ll = long long;
/* define short */
#define all(obj) (obj).begin(), (obj).end()
#define YESNO(bool) if(bool){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}
#define yesno(bool) if(bool){cout<<"yes"<<endl;}else{cout<<"no"<<endl;}
#define YesNo(bool) if(bool){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}

/* REP macro */
#define reps(i, a, n) for (ll i = (a); i < (ll)(n); ++i)
#define rep(i, n) reps(i, 0, n)
#define rrep(i, n) reps(i, 1, n + 1)
#define repd(i,n) for(ll i=n-1;i>=0;i--)
#define rrepd(i,n) for(ll i=n;i>=1;i--)

int main() {

    string S;
    int ans=0;
    cin>>S;
    for(int i=0;i<=9999;i++){//0000~9999を試行する
        vector<bool> flag(10);//[0,9]のフラグ
        int X =i;//Xは試行中の番号
        for(int j=0;j<4;j++){
            flag[X%10] = true;//1の位->千の位の数字にフラグを立てる=試行中の番号に含まれる数字
            X/=10;
        }
        bool flag2 = true;
        for(int j=0;j<10;j++){//備忘録Sとフラグを照合
            if(S[j]=='o' && !flag[j]) flag2 = false;//iが確実に含まれるかつ試行中の番号に含まれない
            if(S[j]=='x' && flag[j]) flag2 = false;//iが確実に含まれないかつ試行中の番号に含まれる
        }
        ans +=flag2;
    }
    cout<<ans<<endl;
    return 0;//O(10^5)
}


#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define sz(a) (int)(a.size())
#define all(a) a.begin(),a.end()
#define lb lower_bound
#define ub upper_bound
#define owo ios_base::sync_with_stdio(0);cin.tie(0);
#define MOD (ll)(998244353)
#define INF (ll)(1e18)
#define debug(...) fprintf(stderr, __VA_ARGS__),fflush(stderr)
#define time__(d) for(long blockTime = 0; (blockTime == 0 ? (blockTime=clock()) != 0 : false);\
debug("%s time : %.4fs\n", d, (double)(clock() - blockTime) / CLOCKS_PER_SEC))
typedef long long int ll;
typedef long double ld;
typedef pair<ll,ll> PII;
typedef pair<int,int> pii;
typedef vector<vector<int>> vii;
typedef vector<vector<ll>> VII;
ll gcd(ll a,ll b){if(!b)return a;else return gcd(b,a%b);}
int main()
{
	int n;
	cin>>n;
	vector<ll>p(1001,0);
	for(int i=0;i<n;i++){
		int a;
		cin>>a;
		for(int j=1;j*j<=a;j++){
			if(a%j == 0){
				if(j > 1)p[j]++;
				if(j*j != a && a/j > 1)p[a/j]++;
			}
		}
	}
	int ans = 0,id = 0;
	for(int i=1;i<=1000;i++){
		if(p[i] > ans){
			ans = p[i];
			id = i;
		}
	}
	cout<<id;
}
