Do you remember how Kai constructed the word "eternity" using pieces of ice as components?Little Sheldon plays with pieces of ice, each piece has exactly one digit between 0 and 9. He wants to construct his favourite number t. He realized that digits 6 and 9 are very similar, so he can rotate piece of ice with 6 to use as 9 (and vice versa). Similary, 2 and 5 work the same. There is no other pair of digits with similar effect. He called this effect "Digital Mimicry".Sheldon favourite number is t. He wants to have as many instances of t as possible. How many instances he can construct using the given sequence of ice pieces. He can use any piece at most once.

The first line contains integer t (1 ≤ t ≤ 10000). The second line contains the sequence of digits on the pieces. The length of line is equal to the number of pieces and between 1 and 200, inclusive. It contains digits between 0 and 9.

NoteThis problem contains very weak pretests.

#include <iostream>
#include <cassert>
#include <cstring>
#include <cstdlib>
#define INF 10000000
using namespace std;

int type(int n)
{
    switch(n)
    {
    case 0:
        return 0;
    case 1:
        return 1;
    case 2:
    case 5:
        return 2;
    case 3:
        return 3;
    case 4:
        return 4;
    case 6:
    case 9:
        return 5;
    case 7:
        return 6;
    case 8:
        return 7;
    default:
        assert(false);
    }
}

int type(char c)
{
    return type(c-'0');
}

int main()
{
    string t;
    cin >> t;

    int countT[8];
    for(int i=0; i<8; i++) countT[i]=0;
    for(int i=0; i<t.length(); i++) countT[type(t[i])]++;

    string s;
    cin >> s;

    int countS[8];
    for(int i=0; i<8; i++) countS[i]=0;
    for(int i=0; i<s.length(); i++) countS[type(s[i])]++;

    ////for(int i=0; i<8; i++) cout << countT[i] << ' ' << countS[i] << endl;

    int result=INF;
    for(int i=0; i<8; i++)
    {
        if(countT[i]!=0)
        {
            result=min(result, countS[i]/countT[i]);
        }
    }
    cout << result;
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
	ios_base :: sync_with_stdio(false);		cin.tie(0);		cout.tie(0);
	int t; 	cin>>t;
	long long arr[10],req[10];
	memset(arr,0,sizeof(arr));
	memset(req,0,sizeof(req));
	string s;		cin>>s;
	for(int i=0;i<s.size();i++){
		int curr=s[i]-'0';
		arr[curr]++;
	}
	while(t>0){
		req[t%10]++;
		t=t/10;
	}
	long long mi=10000;
	for(int i=0;i<9;i++){
		if(i==5)	continue;
		else if(i==2){
			if((req[2]+req[5])==0)	continue;
			mi=min(mi,((arr[2]+arr[5])/(req[2]+req[5])));
		}
		else if(i==6){
			if((req[6]+req[9])==0)	continue;
			mi=min(mi,((arr[6]+arr[9])/(req[6]+req[9])));
		}
		else{
			if(req[i]==0)	continue;
			mi=min(mi,(arr[i])/req[i]);
		}
	}
	cout<<mi;
}

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cassert>
#include <ctime>

using namespace std;

#ifdef WIN32
  #define LLD "%I64d"
#else
  #define LLD "%lld"
#endif

typedef pair<int, int> pii;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<ll> vll;
typedef vector<vll> vvll;

ll rdtsc() {
  ll tmp;
  asm("rdtsc" : "=A"(tmp));
  return tmp;
}

inline int myrand() {
  return abs((rand() << 15) ^ rand());
}

inline int rnd(int x) {
  return myrand() % x;
}

#define pb push_back
#define mp make_pair
#define EPS (1e-9)
#define INF ((int)1e9)
#define sqr(x) ((x) * (x))
#define eprintf(...) fprintf(stderr, __VA_ARGS__)
#define sz(x) ((int)(x).size())
#define TASKNAME "text"

const int maxn = 200 + 10;
char t[maxn], s[maxn];

inline int getInt(char ch) {
  if (ch == '9')
    return 6;
  if (ch == '5')
    return 2;
  return ch - '0';
}

bool solve() {
  if (scanf("%s%s", t, s) < 2)
    return 0;
  int cnt[2][10];
  for (int it = 0; it < 2; ++it) {
    char *str = !it ? t : s;
    memset(cnt[it], 0, sizeof(cnt[it]));
    for (int i = 0; str[i]; ++i)
      ++cnt[it][getInt(str[i])];
  }

  int res = INF;
  for (int i = 0; i < 10; ++i)
    if (cnt[0][i] != 0)
      res = min(res, cnt[1][i] / cnt[0][i]);

  printf("%d\n", res);
  return 1;
}

int main() {
  srand(rdtsc());
#ifdef DEBUG
  freopen(TASKNAME".in", "r", stdin);
  freopen(TASKNAME".out", "w", stdout);
#endif

  while (1) {
    if (!solve())
      break;
    #ifdef DEBUG
      eprintf("%.18lf\n", (double)clock() / CLOCKS_PER_SEC);
    #endif
  }
  return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    string n;
    cin >> n;

    vector<int> narr(10);
    for(int i=0;i<n.length();i++){
        narr[n[i]-48]++;
    }
    string s;
    cin >> s;
    vector<int> arr(10);
    for(int i=0;i<s.length();i++){
        arr[s[i]-48]++;
    }
    int ans = 0;
    int jus_len = n.length();
    int jus_tn  = s.length();
    int cnt =0;
    while(true){
        bool okay = true;
        for(int i=0;i<10;i++){
        if(arr[i]-narr[i]<0 &&(narr[i]>0)){
            int jus = arr[i]-narr[i];
            if(i==9||i==6){
                if(i==9&&(arr[6]+jus>=0)){
                    cnt+= narr[i];
                    arr[6]+=jus;
                    arr[i]=0;
                }else if(i==6&&(arr[9]+jus>=0)){
                    cnt+=narr[i];
                    arr[9]+=jus;
                    arr[i] =0;
                }else{
                    okay =false;
                    break;
                }
            }else if(i==2||i==5){
                if(i==2&&(arr[5]+jus>=0)){
                    cnt+=narr[i];
                    arr[5]+=jus;
                    arr[i]=0;
                }else if(i==5&&(arr[2]+jus>=0)){
                    cnt+=narr[i];
                    arr[2]+=jus;
                    arr[i] =0;
                }else{
                    okay = false;
                    break;
                }
            }else{
                okay = false;
                break;
            }
        }else{
            if(narr[i]>0){
                cnt+=narr[i];
                arr[i]-=narr[i];
            }
        }
    }

        if(!okay) break;
    }

    ans = cnt/(n.length());
    cout << ans<< "\n";
}

#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <sstream>
#include <vector>
#include <complex>
#include <ctime>
#include <stack>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> VI;
typedef vector< VI > VVI;
typedef pair<int, int> PII;
typedef vector<PII> VPII;

#define REP(i, n) for(int i = 0; i < n; ++i)
#define RREP(i, n) for(int i = n - 1; i >= 0; --i)
#define FOR(i, x, y) for(int i = x; i <= y; ++i)
#define RFOR(i, x, y) for(int i = x; i >= y; --i)
#define SZ(a) (int)(a).size()
#define ALL(a) (a).begin(),(a).end()
#define SORT(a) sort(ALL(a))
#define CLEAR(x) memset(x, 0, sizeof x);
#define COPY(FROM, TO) memcpy(TO, FROM, sizeof TO);
#define UNIQUE(c) SORT(c),(c).resize(unique(ALL(c))-(c).begin())
#define pb push_back
#define sqr(x) (x)*(x)
#define X first
#define Y second
#define mk make_pair
const long double pi = acos(-1.0);
const long double eps = 1e-9;
const ll mod = (1e+9) + 7ll;

bool u[201];
string s, t;
int main () {
	cin >> s >> t;
	int cc = 0;
	while (1) {
		REP (i, s.length()) {
			int f = 0;
			REP (j, t.length()) {
				bool fl = 0;
				fl = ((s[i] == '6' || s[i] =='9') && (t[j] == '6' || t[j] =='9'));
				fl = fl | ((s[i] == '2' || s[i] =='5') && (t[j] == '2' || t[j] =='5'));
				fl = fl | (s[i] == t[j]);
				if (fl && !u[j]) {
					u[j] = 1;
					f = 1;
					break;
				}
			}
			if (!f) {
				cout << cc;
				return 0;
			}
		}
		cc++;
	}
	cout << cc;
	return 0;
}

#include <iostream>
#include <vector>
#include <set>
#include <string>
using namespace std;

int ar[200], arr[200];

int main() {
    string n;
    cin >> n;
    for (char c : n) {
        if (c == '5') ++arr['2'];
        else if (c == '9') ++arr['6'];
        else ++arr[c];
    }
    string s;
    cin >> s;
    for (char c : s) {
        if (c == '5') ++ar['2'];//
        else if (c == '9') ++ar['6'];
        else ++ar[c];
    }
    int min = 100000;
    for (int i = '0'; i <= '9'; ++i) {
        if ((arr[i] != 0) && (ar[i] / arr[i] < min)) min = ar[i] / arr[i];
    }
    if (min != 100000) cout << min;
    else cout << 0;
}

#include <iostream>
#include <cstdio>
#include <string>
#include <string.h>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <list>
#include <stack>
#include <set>
#include <cctype>
#include <algorithm>
#include <climits>
#include <queue>
#include <functional>
#include <map>
using namespace std;
typedef pair<int,int> pii;
typedef pair<pii,pii> ppi;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vii;
typedef vector<vii> vvii;
typedef vector<int, int> vipi;
typedef pair<pii,double> pid;
typedef pair<pii,int> piii;
typedef pair<double,double> pdd;
typedef pair<pdd,pdd> pddpdd;
typedef pair<pdd,double> pddd;
typedef pair<pddpdd,double> ppddpddd;
typedef pair<pii, pdd > ppid;
const static int INF = 1000000000;
string t;
string ada;
int banyak[10]={};
int butuh[10]={};
int main(){
    cin >> t;
    cin >> ada;
    for(int i = 0 ; ada[i] != '\0'; i++){
        banyak[ada[i]-'0']++;
    }
    banyak[5] += banyak[2];
    banyak[2] = banyak[5];
    banyak[6] += banyak[9];
    banyak[9] = banyak[6];
    for(int i = 0 ; t[i] != '\0'; i++){
        butuh[t[i]-'0']++;
    }
    butuh[5] += butuh[2];
    butuh[2] = butuh[5];
    butuh[6] += butuh[9];
    butuh[9] = butuh[6];
    int bisa = INF;
    for(int i = 0 ; i < 10; i++){
        if(butuh[i] != 0){
            bisa = min(bisa,banyak[i]/butuh[i]);
        }
    }
    printf("%d\n",bisa);
    return 0;
}

#include<cstring>
#include<cmath>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<string>
using namespace std;

int need[10],have[10];

int main()
{
    int x[6],n=0;
    int t;scanf("%d",&t);
    for (;t;t/=10)
      x[++n]=t%10;
    for (int i=1;i<=n;i++)
      if (x[i]==9) x[i]=6;
      else if (x[i]==5) x[i]=2;
    for (int i=1;i<=n;i++)
      need[x[i]]++;
    char c=getchar();
    for (;c<'0'||c>'9';c=getchar());
    for (;c>='0'&&c<='9';c=getchar())
      {
        int num=c-'0';
        if(num==9)num=6;
        if(num==5)num=2;
        have[num]++;
      }
    int M=(1<<30);
    for (int i=0;i<=9;i++)
      if (need[i])
        M=min(M,have[i]/need[i]);
    printf("%d\n",M);

}

#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pdd pair<ld,ld>
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define MAXINT ((~0) ^ (1 << 31))
#define MAXLL ((~0) ^ ((ll)1 << 63))
#define INF ((int)2e9)
#define INFL ((ll)9e18)
#define FOR(i,j,k) for(int i = j; i < k; i++)
#define REP(i,j,k) for(int i = j; i >= k; i--)
#define setmax(i) const int maxn = (int) i;
#define setmod(i) const int MOD = (int) i;
#define all(a) a.begin(),a.end()

//srand (time(NULL));

using namespace std;

setmax(1e5+10);

int dig[11], num[11];

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);

    string res,str;
    cin >> res >> str;
    FOR(i,0,res.size()) num[res[i]-'0']++;
    FOR(i,0,str.size()) dig[str[i]-'0']++;

    num[2] += num[5];
    num[6] += num[9];
    dig[2] += dig[5];
    dig[6] += dig[9];

    int cnt =0;
    bool f = true;
    while(f)
    {
       // FOR(i,0,11) cout << dig[i] << " ";
      //  cout << endl;
        FOR(i,0,11) dig[i] -= num[i];
        FOR(i,0,11) if(i != 9 && i != 5 && dig[i] < 0) f = false;
        cnt++;
    }
    cout << cnt-1;
}

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
int a[10],b[10];
char str[208];
int minx(int x,int y){if(x<y)y=x;return y;}
int main(void)
{
	int i,k;
	scanf("%s",str+1);
	for(i=1;str[i];i++)
	{
		if(str[i]=='6')str[i]='9';
		if(str[i]=='2')str[i]='5';
		a[str[i]-'0']++;
	}
	scanf("%s",str+1);
	for(i=1;str[i];i++)
	{
		if(str[i]=='6')str[i]='9';
		if(str[i]=='2')str[i]='5';
		b[str[i]-'0']++;
	}
	k=9999;
	for(i=0;i<=9;i++)if(a[i])k=minx(k,b[i]/a[i]);
	cout<<k;
	return 0;
}

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

using ll = long long;
using db = double;
using pii = pair < int, int >;
using pll = pair < ll, ll >;
const int N = 2e5 + 10;
const ll inf = 1e15 + 42;
#define endl "\n"
const ll mod = 1000000007;

void testCase() {
    string s;
    cin >> s;
    string piece;
    cin >> piece;
    int req[11] = {0};
    for (int i=0; i<s.size(); i++) {
        req[s[i] - '0']++;
    }
    req[2] += req[5];
    req[6] += req[9];
    req[5] = 0;
    req[9] = 0;
    int have[11] = {0};
    for (int i=0; i<piece.size(); i++) {
        have[piece[i] - '0']++;
    }
    have[2] += have[5];
    have[6] += have[9];
    int mn = 1e9;
    for (int i=0; i<10; i++) {
        if (req[i]) {
            if (req[i] > have[i]) {
                mn = 0;
                break;
            }
            else {
                mn = min (mn, (have[i]/req[i]));
            }
        }
    }
    cout << mn << endl;
}

int main() {
    ios_base :: sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    testCase();
    return 0;
}

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <math.h>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>
#include <deque>
#include <queue>
#include <stack>
#include <utility>
#include <set>
#include <map>
typedef long long ll;

#define PI atan(1)*4
#define fr(i,a,n) for(int i = a; i < n; ++i)
#define frd(i,n,a) for(int i = n; i >=a; --i)
#define drd(n) double n; scanf("%lf",&n)
#define dr2d(n,m) double n,m; scanf("%lf %lf",&n,&m)
#define dri(n) int n; scanf("%d",&n)
#define drll(n) ll n; scanf("%lld",&n)
#define dr2ll(n,m) ll n,m; scanf("%lld %lld",&n,&m)
#define dr3ll(n,m,p) ll n,m,p; scanf("%lld %lld %lld",&n,&m,&p)
#define dr2i(n,m) int n,m; scanf("%d %d",&n,&m)
#define dr3i(n,m,p) int n,m,p; scanf("%d %d %d",&n,&m,&p)
#define ri(n) scanf("%d",&n)
#define rll(n) scanf("%lld",&n)
#define rd(n) scanf("%lf",&n)
#define r2d(n,m) scanf("%lf %lf",&n,&m)
#define r2i(n,m) scanf("%d %d",&n,&m)
#define r3i(n,m,p) scanf("%d %d %d",&n,&m,&p)
#define rc(c) scanf(" %c",&c)
#define rs(s) scanf("%s",&s)
#define pri(n) printf("%d",n)
#define pr2i(n,m) printf("%d %d",n,m)
#define prc(c) printf("%c",c)
#define prd(n) printf("%.10f",n)
#define prll(n) printf("%lld",n)
#define pr2ll(n,m) printf("%lld %lld",n,m)
using namespace std;

ll choose(ll n, ll k){
	if(k==0)
		return 1;
	return (n * choose(n - 1, k - 1)) / k;
}

ll gcd (ll a, ll b) { return a ? gcd (b % a, a) : b; }

pair<ll,ll> bezout(ll a, ll b){
	if(b==0)
		return make_pair(1,0);
	ll q=a/b,r=a%b;
	auto p=bezout(b,r);
	return make_pair(p.second,p.first-q*p.second);
}

ll pwmod(ll base, ll n, ll mod){
	if(n==0)
		return 1ll;
	if(n%2==0)
		return pwmod(base*base%mod, n/2, mod);
	return base*pwmod(base,n-1,mod)%mod;
}

int ab(int x){
	return x>=0?x:-x;
}

int need[10]={0};
int have[10]={0};
char s[200];

int main() {
	rs(s);
	fr(i,0,strlen(s))
		need[s[i]-'0']++;
	rs(s);
	fr(i,0,strlen(s))
		have[s[i]-'0']++;
	int mi=100000;
	fr(i,0,10){
		if((i==2||i==5)&&need[2]+need[5]>0)
			mi = min(mi,(have[2]+have[5])/(need[2]+need[5]));
		else if((i==6||i==9)&&need[6]+need[9]>0)
			mi = min(mi,(have[6]+have[9])/(need[6]+need[9]));
		else if(need[i]>0)
			mi = min(mi,have[i]/need[i]);
	}
	pri(mi);
	return 0;
}

#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

const int Maxd = 10;
const int Inf = 1000000000;

int t;
int need[Maxd];
int has[Maxd];
int res = Inf;

int Conv(int x)
{
	if (x == 9) x = 6;
	else if (x == 5) x = 2;
	return x;
}

void Take(int x)
{
	while (x) {
		need[Conv(x % 10)]++;
		x /= 10;
	}
}

int main()
{
	scanf("%d", &t); Take(t);
	string s; cin >> s;
	for (int i = 0; i < s.length(); i++) has[Conv(s[i] - '0')]++;
	for (int i = 0; i < Maxd; i++) if (need[i])
		res = min(res, has[i] / need[i]);
	printf("%d\n", res);
	return 0;
}

#include <bits/stdc++.h>
#define FOR(i, a, b) for(int i = a; i <= b; ++i)
#define FORD(i, a, b) for(int i = a; i >= b; --i)
#define debug(x) cout << #x << " = " << x << endl
using namespace std;
int t, n, c[10], d[10];
char s[201];

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> t;
    while (t) {
        int x = t % 10;
        if (x == 6 || x == 9) ++c[6]; else
        if (x == 2 || x == 5) ++c[2]; else
        ++c[x];
        t /= 10;
    }
    cin >> s+1; n = strlen(s + 1);
    FOR(i, 1, n) {
        int x = s[i] - '0';
        if (x == 6 || x == 9) ++d[6]; else
        if (x == 2 || x == 5) ++d[2]; else
        ++d[x];
    }
    int minv = 1e9;
    FOR(i, 0, 9) if (c[i]) minv = min(minv, d[i] / c[i]);
    cout << minv;
    return 0;
}

#include <bits/stdc++.h>
#include <cstdio>
#include <iostream>
using namespace std;
void solve()
{

}
int main()
{
   ios_base::sync_with_stdio(false);cin.tie(NULL);

   #ifndef ONLINE_JUDGE
   freopen("input.txt", "r", stdin);
   freopen("error.txt", "w", stderr);
   freopen("output.txt", "w", stdout);
   #endif
   int t=1;//for text cases
   // cin>>t;// comment this in case there is only one test case
   while(t--)
   {
      string n;
      cin>>n;
      map<int,int> mp1;
      for(char c:n){
         if(c=='5')
            mp1[2]++;
         else if(c=='9')
            mp1[6]++;
         else
            mp1[c-'0']++;
      }
      string p;
      cin>>p;
      map<int,int> mp2;
      for(char c:p){
         if(c=='5')
            mp2[2]++;
         else if(c=='9')
            mp2[6]++;
         else
            mp2[c-'0']++;
      }
      map<int,int>::iterator it;
      int res = INT_MAX;
      for(auto it=mp1.begin();it!=mp1.end();++it){
         if(it->second>mp2[it->first]){
            res=0;
            break;
         }
         res = min(res,mp2[it->first]/it->second);
      }
      cout<<res<<"\n";
   }

   cerr<<"time taken : "<<(float)clock()/CLOCKS_PER_SEC<<" secs"<<endl;
   return 0;
}

#include <iostream>
#include <map>
#include <vector>
#include <deque>
#include <ctime>
#include <set>
#include <string>
#include <fstream>
#include <queue>
#include <list>
using namespace std;

int convert(char ch)
{
    int res = ch-48;
    if(res==9) res=6;
    if(res==5) res=2;
    return res;
}

int main()
{
    int total[9]={0,0,0,0,0,0,0,0,0};
    int need[9]={0,0,0,0,0,0,0,0,0};
    int x;
    cin>>x;
    while(x>0)
    {
        int d=x%10;
        if(d==9) d=6;
        if(d==5) d=2;
        need[d]++;
        x/=10;
    }
    string s;
    cin>>s;
    for(int i=0; i<s.size(); ++i) total[convert(s[i])]++;
    int count=0;
    bool f=true;
    while(f)
    {
        for(int i=0; i<9; ++i)
            if(total[i]>=need[i])
                total[i]-=need[i];
            else f=false;
        if(f) count++;
    }
    cout<<count<<endl;
    //system("pause");
    return 0;
}

#include <iostream>
#include <cstring>
using namespace std;
int T, need[10], have[10], n, sol;
char s[210];

int main()
{
	std::ios_base::sync_with_stdio(false);
	int i, cif;
	cin >> T;
	cin >> (s + 1);
	if(T == 0)
		need[0] = 1;
	else
	{
		while(T)
		{
			cif = T % 10;
			if(cif == 5)
				need[2]++;
			else
			{
				if(cif == 9)
					need[6]++;
				else
					need[cif]++;
			}
			T /= 10;
		}
	}
	n = strlen(s + 1);
	for(i = 1; i <= n; ++i)
	{
		if(s[i] == '5')
			have[2]++;
		else
		{
			if(s[i] == '9')
				have[6]++;
			else
				have[s[i] - '0']++;
		}
	}
	sol = 1000;
	for(i = 0; i < 10; ++i)
		if(need[i])
			sol = min(sol, have[i] / need[i]);
	cout << sol << "\n";
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define mod 1000000007
#define pi 3.1415926535897932384626
#define LMAX 9223372036854775807
#define ll long long
#define fi first
#define se second
ll n, m, k, ans=mod, f[20], g[20];
char s[100005], t[10005];
int main () {
	gets(s);
	gets(t);
	n=strlen(s);
	m=strlen(t);
	for (int i=0; i<m; i++) {
		if (t[i]=='2') f[5]++;
		else if (t[i]=='6') f[9]++;
		else f[t[i]-'0']++;
	}
	for (int i=0; i<n; i++) {
		if (s[i]=='2') g[5]++;
		else if (s[i]=='6') g[9]++;
		else g[s[i]-'0']++;
	}
	for (int i=0; i<10; i++) {
		if (g[i]==0) continue;
		ans=min(ans, f[i]/g[i]);
	}
	cout<<ans<<endl;
	return 0;
}

#include <bits/stdc++.h>
#define ull unsigned long long
#define ll long long
#define ld long double
#define re return
#define oo 1e9
#define OO 1e18
#define mm(o,k) memset(o,k,sizeof o)
#define Hossam_Yehia ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
string s,k;
int n,arr[11],arr2[11];
int main(){
    Hossam_Yehia;
    cin >> k >> s;
    n=k.size();
    for(int i=0;i<n;++i)arr[k[i]-48]++;
    arr[9]+=arr[6];
    arr[5]+=arr[2];
    arr[6]=arr[2]=0;
    n=s.size();
    for(int i=0;i<n;++i)arr2[s[i]-48]++;
    arr2[9]+=arr2[6];
    arr2[5]+=arr2[2];
    arr2[6]=arr2[2]=0;
    int mini(oo);
    for(int i=0;i<=9;++i)if(arr[i])mini=min(mini,arr2[i]/arr[i]);
    cout<<mini<<endl;
    re 0;
}

#include <iostream>
#include <cassert>
#include <cstring>
#include <cstdlib>
#define INF 10000000
using namespace std;

int type(int n)
{
    switch(n)
    {
    case 0:
        return 0;
    case 1:
        return 1;
    case 2:
    case 5:
        return 2;
    case 3:
        return 3;
    case 4:
        return 4;
    case 6:
    case 9:
        return 5;
    case 7:
        return 6;
    case 8:
        return 7;
    default:
        assert(false);
    }
}

int type(char c)
{
    return type(c-'0');
}

int main()
{
    string t;
    cin >> t;

    int countT[8];
    for(int i=0; i<8; i++) countT[i]=0;
    for(int i=0; i<t.length(); i++) countT[type(t[i])]++;

    string s;
    cin >> s;

    int countS[8];
    for(int i=0; i<8; i++) countS[i]=0;
    for(int i=0; i<s.length(); i++) countS[type(s[i])]++;

    ////for(int i=0; i<8; i++) cout << countT[i] << ' ' << countS[i] << endl;

    int result=INF;
    for(int i=0; i<8; i++)
    {
        if(countT[i]!=0)
        {
            result=min(result, countS[i]/countT[i]);
        }
    }
    cout << result;
    return 0;
}

#include<bits/stdc++.h>
#define intt long long int
#define rep(i,n) for(int  i = 0; i < n; ++i)
using namespace std;

int main(){
   string s,t; cin >> t >> s;
   int freq[10],freq2[10];
   rep(i,10) freq[i] = 0;
   rep(i,10) freq2[i] = 0;
   rep(i,(int)s.size()){
        if(s[i] == '2' or s[i] == '5'){
            freq[2]++; freq[5]++;
        }
        else if(s[i] == '6' or s[i] == '9'){
            freq[6]++; freq[9]++;
        }
        else freq[s[i] -'0']++;
   }
   rep(i,(int)t.size()){

    /*if(t[i] == '2' or t[i] == '5'){
            freq2[2]++; freq2[5]++;
        }
        else if(t[i] == '6' or t[i] == '9'){
            freq2[6]++; freq2[9]++;
        }
        else */freq2[t[i] -'0']++;
   }
   int ans = 10000000;

   rep(i,10){

       if(freq2[i] != 0){
        if(i == 2 or  i== 6)
            ans  = min(ans, freq[i]/(freq2[i]+freq2[i+3]));
        else if(i == 5 or i == 9)
            ans  = min(ans, freq[i]/(freq2[i]+freq2[i-3]));
       else
            ans  = min(ans, freq[i]/(freq2[i]));
        //if(freq[i] == 0 and freq2[i] != 0) ans  = 0;
    }
   }
   cout << ans << endl;

return 0;}

//# pragma comment(linker, "/STACK:102400000,102400000")
# include<iostream>
# include<cstdio>
# include<cstdlib>
# include<cstring>
# include<algorithm>
# include<cctype>
# include<cmath>
# include<string>
# include<set>
# include<stack>
# include<queue>
# include<vector>
# include<numeric>
using namespace std;
const int maxn=1111111;
const double inf=0.000001;
const int INF=111111111;
const int mod=1000000007;
# define lson l,m,rt<<1
# define rson m+1,r,rt<<1 | 1
# define PS printf("\n")
# define S(n) scanf("%d",&n)
# define P(n) printf("%d\n",n)
# define Ps(n) printf(" %d",(n))
# define SB(n) scanf("%lld",&n)
# define PB(n) printf("%lld\n",n)
# define PBs(n) printf(" %lld",n)
# define SD(n) scanf("%lf",&n)
# define PD(n) printf("%.3lf\n",n)
# define Sstr(s) scanf("%s",s)
# define Pstr(s) printf("%s\n",s)
# define S0(a) memset(a,0,sizeof(a))
typedef long long ll;
string s1,s2;
int a[11],b[11];
int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    cin>>s1>>s2;
    S0(a),S0(b);
    int l1=s1.length(),l2=s2.length();
    for(int i=0;i<l1;i++)
    a[s1[i]-'0']++;
    for(int i=0;i<l2;i++)
    b[s2[i]-'0']++;
    int ans=INF;
    a[2]=a[5]=a[2]+a[5];
    a[6]=a[9]=a[6]+a[9];
    b[2]=b[5]=b[2]+b[5];
    b[6]=b[9]=b[6]+b[9];
    for(int i=0;i<10;i++)
    {
        if(a[i]!=0)
        ans=min(ans,b[i]/a[i]);
    }
    P(ans);
    return 0;
}

#pragma comment(linker,"/STACK:1000000000,1000000000")

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
#include <stack>
#include <set>
#include <iomanip>
#include <queue>
#include <map>
#include <functional>
#include <memory.h>
#include <list>
#include <sstream>
#include <ctime>
#include <climits>
#include <bitset>
#include <list>

using namespace std;

/* Constants begin */
const long long inf = 1e18+7;
const long long mod = 1e9+7;
const double eps = 1e-9;
const double PI = 2*acos(0.0);
const double E = 2.71828;
/* Constants end */

/* Defines begin */
#define pb push_back
#define mp make_pair
#define ll long long
#define double long double
#define F first
#define S second
#define all(a) (a).begin(), (a).end()
#define forn(i,n) for (ll (i)=0;(i)<(ll)(n);(i)++)
#define random (rand()<<16|rand())
#define sqr(x) (x)*(x)
/* Defines end */

ll ca[15], cb[15];

int main(void) {
    #ifndef ONLINE_JUDGE
        freopen("input.txt","rt",stdin);
        freopen("output.txt","wt",stdout);
    #endif
    string a, b; cin >> a >> b;
    forn(i,a.size()){
     ll x = a[i]-'0';
     if(x == 9) x = 6;
     if(x == 2) x = 5;
     ca[x]++;
    }
    forn(i,b.size()){
     ll x = b[i]-'0';
     if(x == 9) x = 6;
     if(x == 2) x = 5;
     cb[x]++;
    }
    ll ans = inf;
    forn(i,10) if(ca[i]) ans = min(ans,cb[i]/ca[i]);
    cout << ans << endl;
    return 0;
}

#include <iostream>
#include <cstdio>
#include <string>

using namespace std;

int c[20];
int cnumber[20];

int main()
{
    string number;
    string num;
    cin >> number;
    cin >> num;
    for(int i=0;i<num.size();i++)
    {
        if(num[i] == '5') c[2]++;
        else if(num[i] == '9') c[6]++;
        else c[num[i]-'0']++;
    }
    for(int i=0;i<number.size();i++)
    {
        if(number[i] == '5') cnumber[2]++;
        else if(number[i] == '9') cnumber[6]++;
        else cnumber[number[i]-'0']++;
    }
    int ret = 0x3f3f3f3f;
    for(int i=0;i<10;i++) if(cnumber[i]>0) ret = min(ret,c[i]/cnumber[i]);
    cout << ret << endl;
    return 0;
}

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <chrono>

using namespace std;
using namespace std::chrono;

#define endl '\n'
#define npos string::npos
#define MAX_INT pow(2, 31)-1
#define MIN_INT -1*(pow(2, 31)-1)
vector<string> alpha {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};

int GDC(int a, int b){
	if ( a == 0 ) return b;
	if ( b == 0 ) return a;
	return GDC(b, a%b);
}

int LCD(int a, int b){
	if ( a == b ) return a;
	if ( max(a, b) % min(a, b) == 0 )return max(a, b);
	return a*b;
}

int search(vector<int> a, int b){
	int m = a.size()/2;
	vector<int> h;
	int i = -1;
	if ( b == a [m] ) return m;
	if ( a.size() == 1 && b != a[m]) return -1;
	if ( b < a[m] ){ h = {a.begin(), a.begin()+m};i = 0;}
	else{h = {a.begin()+m, a.end()};i = m;}

	int s = search(h, b);

	return s < 0 ? -1 : i+s;
}

int searchU(vector<int> a, int b){

	for ( int i = 0; i < a.size(); i++ ){
		if ( a [i] == b ) return i;
	}
	return -1;
}

int min(vector<int> a){
	int best = MAX_INT;

	for ( auto b : a ){
		if ( b < best ) best = b;
	}

	return best;
}

int max(vector<int> a){
	int best = 0;

	for ( auto b : a ){
		if ( b > best ) best = b;
	}

	return best;
}

void printVector(vector<int> v ){
	for ( auto i : v ){
		cout << i << " ";
	}
	cout << endl;
}

bool in(int val, vector<int> v){
	for ( auto i : v ){
		if ( i == val ){
			return true;
		}
	}

	return false;
}

int sum(vector<int> v){
	int sum = 0;
	for ( auto i : v ){
		sum += i;
	}
	return sum;
}

int main(){
	int cases = 1;
	//cin >> cases;

	for ( int _case = 0; _case < cases; _case++ ){
		string t;
		string s;

		cin >> t;
		cin >> s;

		vector<int> a = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

		for ( int i = 0; i < s.size(); i++ ){
			if ( s [i] == '9' || s [i] == '6' ){
				a [6]++;
				a [9]++;
			} else if ( s [i] == '5' || s [i] == '2' ){
				a [5]++;
				a [2]++;
			} else{
				a [(int)s [i] - 48]++;
			}
		}

		int total = 0;
		while ( true ){
			bool b = false;
			for ( int i = 0; i < t.size(); i++ ){
				if ( a [(int)t [i] - 48] > 0 ){
					if ( (int)t [i] - 48 == 6 || (int)t [i] - 48 == 9 ){
						a [6]--;
						a [9]--;
					} else if ( (int)t [i] - 48 == 2 || (int)t [i] - 48 == 5 ){
						a [2]--;
						a [5]--;
					} else{
						a [(int)t [i] - 48]--;
					}
				} else{
					b = true;
					break;
				}
			}
			if ( b ) break;
			total++;
		}

		cout << total << endl;
	}
}

#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int NA(int x)
{if(x==5)return 2;
 if(x==9)return 6;
 return x;
}

int YN(vector<int>x,vector<int>y)
{
    int i,N=x.size();
    for(i=0;i<N;i++)
    if(x[i]>y[i])return 0;
    return 1;
}

int main(int argc, char *argv[])
{int t,ans=0,i,j;
 cin>>t;
 vector<int>c(9,0),C(9,0);
 while(t)
 {c[NA(t%10)]++;
  t/=10;
 }
 string S;
 cin>>S;
 for(i=0;i<S.size();++i)
 {int d = NA(S[i]-'0');
  C[d]++;
  if(!YN(c,C))continue;
  ans++;
  for(j=0;j<9;j++)C[j]-=c[j];
 }
 cout<<ans;

    return EXIT_SUCCESS;
}

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<vector>
#include<string>
using namespace std;
typedef long long lld;
#define pb push_back
#define mp make_pair
#define X first
#define Y second
#define clr(x,y) memset(x,y,sizeof(x))
#define clrt(x) memset(x,true,sizeof(x))
#define clrf(x) memset(x,false,sizeof(x))
#define inf 0xfffffff
#define maxn 10010
#define eps 1e-8
#define pi acos(-1.0)
int need[110];
char str[100010];
int num[110];
int main()
{
    clr(need,0);
    scanf("%s",str);
    int len=strlen(str);
    for(int i=0;i<len;i++)
    {
        int digit=str[i]-'0';
        if(digit == 5)
            digit=2;
        if(digit == 9)
            digit=6;
        need[digit]++;
    }
    clr(num,0);
    scanf("%s",str);
    len=strlen(str);
    for(int i=0;i<len;i++)
    {
        int digit=str[i]-'0';
        if(digit == 5)
            digit=2;
        if(digit == 9)
            digit=6;
        num[digit]++;
    }
    int ans=inf;
    for(int i=0;i<=9;i++)
    {
        if(need[i] == 0)
            continue;
        ans=min(ans,num[i]/need[i]);
    }
    printf("%d\n",ans);
    return 0;
}

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

#define ran 1011

char a[ran], b[ran];
int sa[ran], sb[ran];

int main() {
	scanf("%s%s", a, b);
	int la = strlen(a), lb = strlen(b);
	for(int i=0;i<la;i++) {
		if (a[i]=='5') sa['2']++;
		else
		if (a[i]=='9') sa['6']++;
		else
			sa[a[i]]++;
	}
	for(int i=0;i<lb;i++) {
		if (b[i]=='5') sb['2']++;
		else
		if (b[i]=='9') sb['6']++;
		else
			sb[b[i]]++;
	}

	int ans = lb;
	for(int i='0';i<='9';i++)
		if(sa[i]>0) ans = min(ans, sb[i]/sa[i]);
	printf("%d\n", ans);

	return 0;
}

/*
 * Author: Gatevin
 * Created Time:  2015/3/29 15:28:41
 * File Name: Chitoge_Kirisaki.cpp
 */
#include<iostream>
#include<sstream>
#include<fstream>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cctype>
#include<cmath>
#include<ctime>
#include<iomanip>
using namespace std;
const double eps(1e-8);
typedef long long lint;

int cnt[100];
char s[500];
int has[100];

int main()
{
    scanf("%s", s);
    int n = strlen(s);
    for(int i = 0; i < n; i++)
    {
        if(s[i] == '2' || s[i] == '5')
        {
            cnt[2]++;
            continue;
        }
        if(s[i] == '6' || s[i] == '9')
        {
            cnt[6]++;
            continue;
        }
        cnt[s[i] - '0']++;
    }
    scanf("%s", s);
    n = strlen(s);
    for(int i = 0; i < n; i++)
    {
        if(s[i] == '2' || s[i] == '5')
        {
            has[2]++;
            continue;
        }
        if(s[i] == '6' || s[i] == '9')
        {
            has[6]++;
            continue;
        }
        has[s[i] - '0']++;
    }
    int ans = 99999;
    for(int i = 0; i < 10; i++)
    {
        if(i == '5' || i == '9') continue;
        if(cnt[i])
            ans = min(ans, has[i]/cnt[i]);
    }
    cout<<ans<<endl;
    return 0;
}

#include "bits/stdc++.h"

#define ll long long

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    string str;
    cin >> str;
    vector<int> num;
    for (int i = 0; i < str.size(); ++i)
    {
        num.push_back(str[i] - '0');
    }
    int n = num.size();

    vector<int> nlist(10, 0);
    {
        string s;
        cin >> s;
        for (int i = 0; i < s.size(); ++i)
        {
            ++nlist[s[i] - '0'];
        }
    }

    int ans = 0;
    while (true)
    {
        bool ok = 1;
        vector<int> templist = nlist;
        for (int i = 0; i < n; ++i)
        {
            if (templist[num[i]])
            {
                templist[num[i]]--;
            }
            else
            {
                ok = false;
                break;
            }
        }
        if (!ok)
            break;
        nlist = templist;
        ++ans;
    }
    vector<int> replacement{0, 1, 5, 3, 4, 2, 9, 7, 8, 6};
    while (true)
    {
        bool ok = 1;
        for (int i = 0; i < n; ++i)
        {
            if (nlist[num[i]])
            {
                nlist[num[i]]--;
            }
            else
            {
                if (nlist[replacement[num[i]]])
                {
                    nlist[replacement[num[i]]]--;
                }
                else
                {
                    ok = false;
                    break;
                }
            }
        }
        if (!ok)
            break;
        ++ans;
    }
    cout << ans;
}

/////////////////////////////////////////////////BBBBBBBBB///////////////////////////////////////////////
//IN THE NAME OF GOD
#include <iostream>
#include <fstream>
#include <cstdio>
#include <vector>
#include <string>
#include <map>
#include <queue>
#include <set>
#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <cmath>

using namespace std ;

int main ()
{
    //freopen ( "i.txt" , "r" , stdin ) ;

    int arr[10] = {0} ;
    int arr_num[10] = {0} ;
    int t ;
    string line ;
    cin >> t ;
    getline ( cin , line ) ;
    getline ( cin , line ) ;
    for ( int i = 0 ; i < line.size() ; i++ ){
        if ( line[i] == '2' || line[i] == '5' ) arr[2]++ ;
        else if ( line[i] == '6' || line[i] == '9' ) arr[6]++ ;
        else arr[(int)line[i]-'0']++ ;
    }
    int tmp ;
    vector < int > num ;
    while ( t ){
        tmp = t%10 ;
        if ( tmp == 6 || tmp == 9 ) arr_num[6]++ ;
        else if ( tmp == 2 || tmp == 5 ) arr_num[2]++ ;
        else arr_num[tmp]++ ;
        t /= 10 ;
    }
    int res = 0 ;
    bool flag = 0 , can ;
    while ( !flag ){
        can = 1 ;
        for ( int i = 0 ; i < 10 ; i++ ){
            if ( arr_num[i] == 0 ) continue ;
            else if ( arr_num[i] ){
                if ( arr[i] < arr_num[i] ){
                    can = 0 ;
                    flag = 1 ;
                    break ;
                }
                if ( arr[i] >= arr_num[i] )
                    arr[i] -= arr_num[i] ;
                if ( arr[i] < arr_num[i] ){
                    flag = 1 ;
                }
            }
        }
        if ( can ) res++ ;
    }
    cout << res << endl ;
    return 0 ;
}

#include <bits/stdc++.h>
#define M ((ll)1e9+7)
#define F first
#define S second
#define pb push_back
#define mp make_pair
#define pi acos(-1)
typedef long long ll;
using namespace std;

int main()
{
    string s,t;
    cin>>s>>t;
    //cout<<s<<" "<<t<<endl;
    int h[10]={0},h1[10]={0};
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='2'||s[i]=='5')
        h[2]++;
        else if(s[i]=='6'||s[i]=='9')
        h[6]++;
        else
        h[s[i]-48]++;
    }

    for(int i=0;i<t.size();i++)
    {
        if(t[i]=='2'||t[i]=='5')
        h1[2]++;
        else if(t[i]=='6'||t[i]=='9')
        h1[6]++;
        else
        h1[t[i]-48]++;
    }

    int mi=1000000000;
    for(int i=0;i<10;i++)
    {
        if(h[i]!=0)
        {
            mi=min(mi,h1[i]/h[i]);
        }
    }
    cout<<mi<<endl;
    return 0;
}

#define _USE_MATH_DEFINES

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <algorithm>
#include <functional>
#include <cmath>
#include <sstream>
#include <utility>
#include <ctime>
#include <memory.h>
#include <cctype>
#include <cstdlib>
#include <limits>

using namespace std;

#pragma comment (linker, "/STACK:64000000")

#define y0 qwertyuiop
#define y1 asdfghjkl
#define forn(j, n) for(j=1; j<=n; j++)
#define sz size()
#define pb push_back
#define fors(w, s) for(map <ll, int> :: iterator w=s.begin(); w!=s.end(); w++)
#define pii pair<int, int>
#define uns unsigned
#define vi vector <int>
#define vvi vector <vi>
#define inf 2000000000
#define o 1000000007
#define ll long long
#define maxint 2147483648

int j, n, k, l, i, h, t, q[6], mn, sum, mex, p, q1[6], q2[6], a[1000500], b[1000500], z[10]={0, 1, 2, 3, 4, 2, 6, 7, 8, 6};
string s;

void tg ()
{
	freopen ("output.txt","r",stdin); freopen ("input.txt","w",stdout);

}

int main()
{
	//tg (); return 0;
	//freopen ("input.txt","r",stdin); freopen ("output.txt","w",stdout);
    //freopen ("smith.in","r",stdin); freopen ("smith.out","w",stdout);
	cin >> s;
	forn (j, s.sz)
	{
		a[z[s[j-1]-'0']]++;
	}
	cin >> s;
	forn (j, s.sz)
	{
		b[z[s[j-1]-'0']]++;
	}
	mn=inf;
	for (j=0; j<10; j++)
	{
		if (a[j])
		{
			mn=min(mn, b[j]/a[j]);
		}
	}
	printf ("%d", mn);
	return 0;
}

#include<bits/stdc++.h>

using namespace std;

int main() {
    int t;
    string s;
    cin >> t;
    cin >> s;
    int num[10] = {0};
    int arr[10] = {0};
    int temp = t;
    while(temp > 0) {
        if (temp%10 == 9) {
            num[6] += 1;
        } else if (temp%10 == 5) {
            num[2] += 1;
        } else {
            num[temp%10] += 1;
        }
        temp /= 10;
    }
    vector<int> dig;
    for (int i = 0; i < 10; i++) {
        if (num[i] != 0) {
            dig.push_back(i);
            //cout << i << endl;
        }
    }
    for (int i = 0; i < s.size(); i++) {
        int x = s[i] - '0';
        if (x == 2 || x == 5) arr[2] += 1;
        else if (x == 6 || x == 9) arr[6] += 1;
        else arr[x] += 1;
    }
    int ans = 0;
    bool cont = true;
    while(cont) {
        for (int i: dig) {
            int req = num[i];
            int hav = arr[i];
            //cout << req << " " << hav << " " << i << endl;
            if (req > hav) {
                cont = false;
                break;
            } else {
                arr[i] -= req;
            }
        }
        if (cont) ans += 1;
    }
    cout << ans << endl;
    return 0;
}

#pragma warning( disable : 4996)
#pragma comment(linker, "/STACK:666000000")

#define bublic public

#include <algorithm>
#include <assert.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <limits.h>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <time.h>
#include <vector>
#include <stack>

#define nextLine() {for(int c=getchar(); c!='\n' && c!=EOF; c=getchar());}
#define sqr(a) ((a)*(a))
#define has(mask,i) (((mask) & (1<<(i))) == 0 ? false : true)
#define eprintf(...) fprintf(stderr, __VA_ARGS__)

#define TASK "file"

using namespace std;

#define mp(x, y) make_pair(x, y)
#define pb(_o_) push_back(_o_)

typedef long long LL;
typedef unsigned long long ULL;
typedef long double ldb;

typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
#ifndef ONLINE_JUDGE
typedef vector<int> vc;
typedef vector<vc> vvc;
#else
typedef vector<char> vc;
typedef vector<char> vvc;
#endif

typedef list<int> li;

const int inf = (1 << 30) - 1;
const ldb eps = 1e-9;
const ldb pi = fabs(atan2(0.0, -1.0));

#ifndef ONLINE_JUDGE
#define parr(a,n,m) for(int i=0;i<n;i++){for(int j=0;j<m;j++)cout<<a[i][j]<<" ";puts("");}puts("");
#else
#define parr(a,n,m) for(int i=0;i<2;i++)i++;
#endif

void ML(const bool v)
{
    if (v)
        return;
    int *ass;
    for (;;)
    {
        ass = new int[2500000];
        for (int i = 0; i < 2500000; i++)
            ass[i] = rand();
    }
}

void TL(const bool v)
{
    if (v)
        return;
    int *ass;
        ass = new int[250];
    for (;;)
    {
        for (int i = 0; i < 250; i++)
            ass[i] = rand();
    }
}

void PE(const bool v)
{
    if (v)
        return;
    puts("ass 1 2 3 4 5 6 fuck");
    exit(0);
}

string want, have;
int ch[10], cw[10];

int conv(char c)
{
    if (c == '5')
        c = '2';
    if (c == '9')
        c = '6';
    return c - '0';
}

void LoAd()
{
    cin >> want >> have;

    for (int i = 0; i < (int) want.size(); i++)
        cw[ conv(want[i]) ] ++;

    for (int i = 0; i < (int) have.size(); i++)
        ch[ conv(have[i]) ] ++;
}

void SoLvE()
{
    int res = INT_MAX;
    for (int i = 0; i < 10; i++)
    {
        if (0 != cw[i])
            res = min(res, ch[i] / cw[i]);
    }
    cout << res;
}

int main()
{
    srand( (int) time(NULL));
#ifndef ONLINE_JUDGE
    freopen(TASK".in","r",stdin);   freopen(TASK".out","w",stdout);
#endif
    LoAd();
    SoLvE();
    return 0;
}

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <cassert>
#include <sstream>
#include <numeric>
#include <climits>
#include <cctype>
#include <ctime>
#include <cmath>
#include <vector>
#include <string>
#include <queue>
#include <list>
#include <map>
#include <set>
using namespace std;

/*
......
4
3 4
2 3
1 6
2 6
*/

// looks like a prefix sum solution.
int main()
{

    string t, ice;
    cin >> t >> ice;
    map<char, int> freq;
    map<char, int> recipe;
    for(char c : t){
        if(c == '5'){
            freq['2'] += 1;
        }
        else if(c == '9'){
            freq['6'] += 1;
        }
        else{
            freq[c] += 1;
        }
    }
    for(char c : ice){
        if(c == '5'){
            recipe['2'] += 1;
        }
        else if(c == '9'){
            recipe['6'] += 1;
        }
        else{
            recipe[c] += 1;
        }
    }

    int ans = INT_MAX;
    for(auto i : freq){
        int cur_freq = i.second;
        if(cur_freq == 0){
            continue;
        }
        int cur_have = recipe[i.first];
        if(cur_have == 0)
            ans = 0;
        else{
            ans = min(ans, cur_have / cur_freq);
        }
    }

    cout << ans << endl;

	return 0;
}

#include <iostream>
#include <cassert>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <string>
#include <bitset>
#include <vector>
#include <complex>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef vector<int> vi;
#define de(x) cout << #x << "=" << x << endl
#define rep(i,a,b) for(int i=a;i<(b);++i)
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define fi first
#define se second

int x,cnt[10];
string s;
int to(int x){if(x == 5) return 2;if(x == 9) return 6;return x;}

int main(){
    cin >> x >> s;
    for(auto ch : s) cnt[to(ch-'0')]++;
    map<int,int> S;
    while(x) S[to(x%10)]++ , x /= 10;
    int ans = 1e8;
    for(auto e : S) ans = min(ans , cnt[e.fi] / e.se);
    cout << ans << endl;
    return 0;
}

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

#define int long long
#define DEBUG(x) cerr <<#x<<":"<<x<<endl;
#define DEBUG2(x, y) cerr <<#x<<":"<<x<<" "<<#y<<":"<<y<<endl;
#define DEBUG3(x, y, z) cerr <<#x<<":"<<x<<" "<<#y<<":"<<y<<" "<<#z<<":"<<z<<endl;
#define DEBUGVC(x) cerr <<#x<<": "; for(auto a:x) cerr << a <<" "; cerr << endl;
#define DEBUGMP(x) cerr <<#x<<":"<<endl; for(auto a:x) cerr << a.first <<" "<< a.second << endl;
#define MAX_N (100005)
#define INF (1int << 60)
const int MOD = (int)1e18 + 7;

signed main(){
    string t, s;
    cin >> t >> s;
    int n = t.length(), m = s.length();

    map<int,int> mp;
    for(int i=0; i<m; i++){
        int d = s[i]-'0';
        if(d==2 || d==5){
            mp[2]++;
        }
        else if(d==6 || d==9){
            mp[6]++;
        }
        else {
            mp[d]++;
        }
    }

    int ans=0;
    while(1){
        bool f=false;
        for(int i=0; i<n; i++){
            int d = t[i]-'0';
            if(d==2 || d==5) d=2;
            else if(d==6 || d==9) d=6;
            if(mp[d]==0) {
                f=true;
                break;
            }
            mp[d]--;
        }
        if(f){
            break;
        } else ans++;
    }
    cout << ans << endl;
}

#include <vector>
#include <queue>
#include <stack>
#include <fstream>
#include <functional>
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <iomanip>
#include <string>
#include <set>
#include <cmath>
#include <ctime>
#include <cstring>
#include <map>
#include <stack>
#include <utility>
#include <tuple>
#include <unordered_map>
#include <sstream>
#include <bitset>
#include <unordered_set>
#define pause system("pause")
#define input ios_base::sync_with_stdio(0)
#define itn int
#define vecotr vector
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef pair<ll, ll> pll;

int a[11];
int b[11];

int main()
{
	input;
	string n, s;
	cin >> n >> s;
	for (auto &x : s)
	{
		if (x == '5') x = '2';
		if (x == '9') x = '6';
		a[x - '0']++;
	}
	for (auto &x : n)
	{
		if (x == '5') x = '2';
		if (x == '9') x = '6';
		b[x - '0']++;
	}
	int ans = 1e8;
	for (int i = 0; i < 10; i++)
	{
		if (b[i] == 0) continue;
		ans = min(ans, a[i] / b[i]);
	}
	cout << ans;

	return 0;
}

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    //freopen("file.in","r",stdin);
    //freopen("file.out","w",stdout);
    int t[10]={0},nums[10]={0};
    string s;
    getline(cin,s);
    stringstream ss(s);
    char c;
    while(ss.good()){
        ss>>c;
        t[c-'0']++;
    }
    t[c-'0']--;

    getline(cin,s);
    stringstream ss1(s);
    while(ss1.good()){
        ss1>>c;
        nums[c-'0']++;
    }
    nums[c-'0']--;

    t[2] += t[5];
    t[5] = 0;

    t[6] += t[9];
    t[9] = 0;

    nums[2] += nums[5];
    nums[5] = 0;

    nums[6] += nums[9];
    nums[9] = 0;

    int min = 1000;

    for(int i=0;i<10;i++)
        if(t[i])
            if(nums[i]/t[i]<min)
                min = nums[i]/t[i];
    cout<<min<<endl;
    return 0;
}

#include<bits/stdc++.h>
#define rep(i, a, b) for(int i = (int)a; i < (int)b; i++)
#define red(i, a, b) for(int i = (int)a; i > (int)b; i--)
#define RED true
#define BLACK false
#define pb push_back
#define mk make_pair
#define fi first
#define se second
using namespace std;
typedef pair<int, int> ii;
typedef long long ll;
typedef pair<ii, int> iii;
typedef vector<int> vi;
const int N = 200 + 7;
const int M = 1e9;
const int inf = 1e9 + 7;
const int base = 1e9 + 9;
const double pi = acos(-1);
const double ep = 1e-9;

int sl[10];
int x[10];
int n;
string s;

int main(){
    cin >> n >> s;

    rep(i, 0, s.size()){
        int u = s[i] - '0';
        if (u == 5) x[2]++;
        else if (u == 9) x[6]++;
        else x[u]++;
    }

    if (n == 0) cout<<x[0]<<endl;
    else{
        while (n > 0){
            int u = n % 10;
            if (u == 5) sl[2]++;
            else if (u == 9) sl[6]++;
            else sl[u]++;
            n /= 10;
        }
        int res = inf;
        rep(i, 0, 10)
            if (sl[i] > 0)
            res = min(res, x[i] / sl[i]);
        cout<<res;
    }
}

// 1 2 3 4 5 6
// 6 5 4 3 2 1

#include <iostream>
#include <string>
using namespace std;

int frc[20];

int main()
{
	string a, b;
	cin >> a >> b;
	for (auto &i : a)
		i -= '0';
	for (auto &i : b)
		frc[i -= '0']++;

	int r = 0, m = 1;

	while (m) {
		for (auto i : a) {
			if (frc[i] != 0)
				frc[i]--;
			else if (i == 6 && frc[9])
				frc[9]--;
			else if (i == 9 && frc[6])
				frc[6]--;
			else if (i == 2 && frc[5])
				frc[5]--;
			else if (i == 5 && frc[2])
				frc[2]--;
			else
				m = 0;
		}

		if (m)
			r++;
	}

	cout << r;

	return 0;
}

#include <algorithm>
#include <bitset>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <deque>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

typedef long long int64;
typedef unsigned long long uint64;
typedef pair<int64, int64> pii;
typedef pair<double, double> pdd;
typedef vector<int64> vi;
typedef vector<pii> vpii;
typedef vector<double> vd;
typedef vector<vi>  vvi;

constexpr double eps = 1e-11;
constexpr double pi = acos(-1.0);
constexpr int64 p = 1000000007;
constexpr int64 countbit(int64 n) { return n == 0 ? 0: countbit(n / 2) + n % 2; }
constexpr int64 lowbit(int64 n) { return (n ^ (n-1) ) & n; }
constexpr int64 gcd(int64 a, int64 b) { return b == 0? a : gcd(b, a % b); }
constexpr int64 lcm(int64 a, int64 b) { return a * b / gcd(a, b); }
int64 toInt64(string s) { istringstream sin(s); int64 t; sin >> t; return t; }
string toStr(int64 t) { stringstream sin; sin << t; string s; sin >> s; return s; }
template<typename T> constexpr auto sqr(const T& n) -> decltype(n * n) { return n * n; }
template<typename T> void out(const T& array) {
   for(const T& value : array) cout << value << "\n";
   cout.flush();
}

struct Point {
    int64 x;
    int64 y;
    Point(){}
    Point(int x, int64 y): x(x), y(y){}
    bool operator<(const Point& that) const {
        return make_pair(x,y) < make_pair(that.x, that.y);
    }
};

#define all(a) (a).begin(), (a).end()
#define pb push_back

void solve() {
    int t;
    cin >> t;
    string ss;
    cin >> ss;
    vi mp(10);
    for (auto c:ss)
        ++mp[c-'0'];

    string tt = toStr(t);
    replace(all(tt), '5', '2');
    replace(all(tt), '9', '6');
    mp[6]+=mp[9];
    mp[2]+=mp[5];
    vi ne(10);
    for (auto c:tt)
        ne[c-'0']++;
    ne[6]+=ne[9];
    ne[2]+=ne[5];
    int64 result = p;
    for (auto i = 0; i!=10; ++i) {
        if (i!=5 && i != 9 && ne[i])
        result = min(result, mp[i]/ne[i]);
    }
    cout <<result <<endl;
}

int main() {
    cout.sync_with_stdio(false);
    cin.sync_with_stdio(false);
    solve();
    return EXIT_SUCCESS;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
	int hash1[8];
	int hash2[8];
	memset(hash1, 0, sizeof(hash1));
	memset(hash2, 0, sizeof(hash2));
	string s1,s2;
	cin>>s1;
	cin>>s2;
	for(int i=0;i<s1.length();i++){
		int temp=s1.at(i)-'0';
		if(temp==0){
			hash1[0]++;
		}
		else if(temp==1){
			hash1[1]++;
		}
		else if(temp==2 || temp==5){
			hash1[2]++;
		}
		else if(temp==3){
			hash1[3]++;
		}
		else if(temp==4){
			hash1[4]++;
		}
		else if(temp==6 || temp==9){
			hash1[5]++;
		}
		else if(temp==7){
			hash1[6]++;
		}
		else if(temp==8){
			hash1[7]++;
		}
	}
	for(int i=0;i<s2.length();i++){
		int temp=s2.at(i)-'0';
		if(temp==0){
			hash2[0]++;
		}
		else if(temp==1){
			hash2[1]++;
		}
		else if(temp==2 || temp==5){
			hash2[2]++;
		}
		else if(temp==3){
			hash2[3]++;
		}
		else if(temp==4){
			hash2[4]++;
		}
		else if(temp==6 || temp==9){
			hash2[5]++;
		}
		else if(temp==7){
			hash2[6]++;
		}
		else if(temp==8){
			hash2[7]++;
		}
	}
	int min=INT_MAX;
	for(int i=0;i<8;i++){
		if(hash1[i]==0){
			continue;
		}
		else{
			int oc=hash2[i]/hash1[i];
			if(oc<min){
				min=oc;
			}
		}
	}
	if(min==INT_MAX){
		cout<<0;
	}
	else{
		cout<<min;
	}
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int bucket[10];
    int bucket2[10];
    for(int i=0;i<10;i++)
    {
        bucket[i]=0;
        bucket2[i]=0;
    }
    string t,n;
    cin >> t;
    cin >> n;
    for(auto it=n.begin();it!=n.end();it++)
    {
        if(*it==57)
            *it=54;
        if(*it==53)
            *it=50;
        bucket[*it-48]++;
    }
    int min=1000;
    for(auto it=t.begin();it!=t.end();it++)
    {
        if(*it==57)
            *it=54;
        if(*it==53)
            *it=50;
        bucket2[*it-48]++;

        //cout << min << " " << bucket[*it-48] << " " << bucket2[*it-48] << "\n";
        if((bucket[*it-48]/bucket2[*it-48])<=min)
        {
            min=bucket[*it-48]/bucket2[*it-48];
        }
    }
    cout << min << "\n";
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string s;
    cin>>s;
    int len = s.size();
    int hash[10]={0};
    for(int i=0;i<len;i++)
    {
        hash[s[i]-'0']++;
    }
    hash[2]=hash[2]+hash[5];
    hash[5]=0;
    hash[6]+=hash[9];
    hash[9]=0;
    int m = 100001;
    int num = n;
    //int check25=0;check69=0;
    int c[10]={0};
    while(num)
    {
        int d=num%10;
        if(d==5)
        {
         d=2;
        }
        else if(d==9)
        {
            d=6;
        }
        c[d]++;
        //hash[d]=
        num/=10;
    }
    //int m=100001;
    for(int i=0;i<10;i++)
    {
        if(c[i]==0)
        hash[i]=0;
        else
        {
            hash[i]/=c[i];
            m=min(m,hash[i]);
        }

    }
    if(m==100001)
    cout<<"0\n";
    else
    cout<<m<<"\n";
    return 0;
}

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str,t;
    int arr[10],b[10],cnt;
    bool check;
    while(cin>>t>>str)
    {
        for(int i=0;i<10;++i)
        {
        arr[i]=0;
        b[i]=0;
        }
         for(int i=0;i<t.size();++i)
         {
                 arr[t[i]-'0']+=1;
         }
         for(int i=0;i<str.size();++i)
         {
                 b[str[i]-'0']+=1;
         }

         check=true;
         cnt=0;
         arr[6]+=arr[9];
         arr[9]=arr[6];
         arr[2]+=arr[5];
         arr[5]=arr[2];
         b[6]+=b[9];
         b[9]=b[6];
         b[2]+=b[5];
         b[5]=b[2];

           for(int i=0;i<10;++i)
           {
                   if(!check)
                   {
                   if(b[i]>=arr[i])
                   {
                           if(arr[i] >0 && cnt> (b[i]/arr[i]))
                           cnt=b[i]/arr[i];
                   }
                   else
                   {
                   cnt=0;
                   break;
                   }
                   }
                   else
                   {
                       if(arr[i]>0)
                       {
                       check=false;
                       if((b[i]/arr[i])==0)
                       break;
                       else
                       cnt=b[i]/arr[i];
                       }
                   }
           }
           cout<<cnt<<endl;

    }
    return 0;
}

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

// Macros and Constants
#define ll long long
const ll mod=1000000007LL;

char gc(char c) {
    if (c == '6' || c == '9') {
        return '6';
    }
    if (c == '2' || c == '5') {
        return '2';
    }
    return c;
}

int main(int argc, char const *argv[])
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    #ifndef ONLINE_JUDGE
        ifstream cin("practice/input.txt");
        ofstream cout("practice/output.txt");
    #endif

    unordered_map<char, int> sm, im;
    string s, i;

    cin >> s >> i;
    for (char c: s) sm[gc(c)]++;
    for (char c: i) im[gc(c)]++;

    int count = 0;
    while (true) {
        bool possible = true;
        for (pair<char, int> p: sm) {
            im[gc(p.first)] -= p.second;
            if (im[gc(p.first)] < 0) {
                possible = false;
                break;
            }
        }
        if (possible) count++;
        else break;
    }

    cout << count << "\n";
    return 0;
}

/*{{{*/
#include <bits/stdc++.h>
#define SZ(X) ((int)(X).size())
#define ALL(X) (X).begin(), (X).end()
#define REP(I, N) for (int I = 0; I < (N); ++I)
#define REPP(I, A, B) for (int I = (A); I < (B); ++I)
#define FOR(I, A, B) for (int I = (A); I <= (B); ++I)
#define FORS(I, S) for (int I = 0; S[I]; ++I)
#define RS(X) scanf("%s", (X))
#define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end()))))
#define GET_POS(c,x) (lower_bound(c.begin(),c.end(),x)-c.begin())
#define CASET int ___T; scanf("%d", &___T); for(int cs=1;cs<=___T;cs++)
#define MP make_pair
#define PB emplace_back
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define LEN(X) strlen(X)
#define F first
#define S second
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef long double LD;
typedef pair<int,int> PII;
typedef vector<int> VI;
typedef vector<LL> VL;
typedef vector<PII> VPII;
typedef pair<LL,LL> PLL;
typedef vector<PLL> VPLL;
template<class T> void _R(T &x) { cin >> x; }
void _R(int &x) { scanf("%d", &x); }
void _R(int64_t &x) { scanf("%lld", &x); }
void _R(double &x) { scanf("%lf", &x); }
void _R(char &x) { scanf(" %c", &x); }
void _R(char *x) { scanf("%s", x); }
void R() {}
template<class T, class... U> void R(T &head, U &... tail) { _R(head); R(tail...); }
template<class T> void _W(const T &x) { cout << x; }
void _W(const int &x) { printf("%d", x); }
void _W(const int64_t &x) { printf("%lld", x); }
void _W(const double &x) { printf("%.16f", x); }
void _W(const char &x) { putchar(x); }
void _W(const char *x) { printf("%s", x); }
template<class T,class U> void _W(const pair<T,U> &x) {_W(x.F); putchar(' '); _W(x.S);}
template<class T> void _W(const vector<T> &x) { for (auto i = x.begin(); i != x.end(); _W(*i++)) if (i != x.cbegin()) putchar(' '); }
void W() {}
template<class T, class... U> void W(const T &head, const U &... tail) { _W(head); putchar(sizeof...(tail) ? ' ' : '\n'); W(tail...); }
#ifdef HOME
 #define DEBUG(...) {printf("# ");printf(__VA_ARGS__);puts("");}
#else
 #define DEBUG(...)
#endif
int MOD = 1e9+7;
void ADD(LL& x,LL v){x=(x+v)%MOD;if(x<0)x+=MOD;}
/*}}}*/
const int SIZE = 1e6+10;
int main(){
    string s;
    R(s);
    map<char,int>need;
    REP(i,SZ(s)){
        if(s[i]=='9')need['6']++;
        else if(s[i]=='5')need['2']++;
        else need[s[i]]++;
    }
    R(s);
    map<char,int>have;
    REP(i,SZ(s)){
        if(s[i]=='9')have['6']++;
        else if(s[i]=='5')have['2']++;
        else have[s[i]]++;
    }
    int an=1e9;
    for(auto x: need){
        an=min(an,have[x.F]/x.S);
    }
    W(an);
    return 0;
}

//I_F_A
#include "bits/stdc++.h"
using namespace std;

int main(){

	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	string a,b;
	cin >> a >> b;

	map<char,long long> mymap;
	for(long long i=0;i<b.length();i++){

		if(b[i] == '9'){

			mymap['6']++;
		}
		else if(b[i] == '5'){

			mymap['2']++;
		}
		else{

			mymap[b[i]]++;
		}
	}
	map<char,long long> mymapa;
	for(long long i=0;i<a.length();i++){

		if(a[i] == '9'){

			mymapa['6']++;
		}
		else if(a[i] == '5'){

			mymapa['2']++;
		}
		else{

			mymapa[a[i]]++;
		}
	}

	long long maxi = INT_MAX;
	for(char ch = '0' ; ch <= '9' ; ch++){

		if(mymapa[ch] > 0){

          	long long v = mymap[ch]/mymapa[ch];
			maxi = min(maxi,v);
		}
	}
	cout << maxi << endl;
}

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int c[10];
int c1[10];

int main()
{
	int n;
	string s;
	cin>>n>>s;
	int i;
	while(n)
	{
		c[n%10]++;
		n/=10;
	}

	int l=s.length();
	for(i=0;i<l;i++)
	{
		c1[s[i]-'0']++;
	}
	int max=200000;
	for(i=0;i<10;i++)
	{
		if(i!=2&&i!=5&&i!=6&&i!=9&&c[i]!=0)
		{
			if(c1[i]/c[i]<max)
				max=c1[i]/c[i];
		}
	}
	int a=c[2]+c[5];
	int b=c1[2]+c1[5];
	if(a!=0&&b/a<max)
		max=b/a;
	a=c[6]+c[9];
	b=c1[6]+c1[9];
	if(a!=0&&b/a<max)
		max=b/a;

	cout<<max<<endl;
	return 0;
}

#include <iostream>
#include <vector>

using namespace std;

int main()
{
vector<char> ref;
vector<char> let;

bool end = false;
while (!end)
{
  char t;
  cin.get(t);
  if (t == '\n')
    end = true;
  else
    ref.push_back(t);
}

end = false;
while (!end)
{
  char t;
  cin.get(t);
  if (t == '\n')
    end = true;
  else
    let.push_back(t);
}

end = false;
int count = -1;
while (!end)
{
  count++;
  end = true;
  for (int i=0; i<ref.size() && end; i++)
    {
    end = false;
    for(int j=0; j<let.size() && !end ; j++)
      {
      switch(ref[i])
        {
        case '2':
        case '5':
          if (let[j]=='2' || let[j]=='5')
            {
            let[j] = ' ';
            end = true;
            }
          break;
        case '6':
        case '9':
          if (let[j]=='6' || let[j]=='9')
            {
            let[j] = ' ';
            end = true;
            }
          break;
        default:
          if (let[j]==ref[i])
            {
            let[j] = ' ';
            end = true;
            }
          break;
        }
      }
    }
  end = !end;

}

cout << count << endl;
return 0;
}

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

char x[1000];
char y[1000];
int pieces[12]={0};
int need[12]={0};
int main(){
    scanf("%s",x);
    scanf("%s",y);
    int len=strlen(x);
    for (int i=0;i<len;i++){
        int r=x[i]-48;
        need[r]++;
        if (r==6){
            need[6]--;
            need[9]++;
        }
        if (r==2){
            need[2]--;
            need[5]++;
        }
    }

    len=strlen(y);
    for (int i=0;i<len;i++){
        int r=y[i]-48;
        pieces[r]++;
        if (r==6){
            pieces[6]--;
            pieces[9]++;
        }
        if (r==2){
            pieces[2]--;
            pieces[5]++;
        }
        if (r==5)pieces[2]++;
        if (r==9)pieces[6]++;
    }
    int maxi=23234234;
    for (int i=0;i<10;i++){
        if (need[i]>0){
            maxi=min(maxi,pieces[i]/need[i]);
        }
    }
    printf("%d\n",maxi);
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define f0(i, a, b) for (int i = a; i < b; i ++)

template <class T> void chkmin(T &a, T b) {if (a > b) a = b;}

#define N 205

char s[N], t[N];
int g[20], h[20];

int main() {
    scanf("%s %s", s, t);
    int ls = strlen(s), lt = strlen(t);
    f0(i, 0, ls) g[s[i]-'0'] ++; g[2] += g[5], g[5] = 0, g[6] += g[9], g[9] = 0;
    f0(i, 0, lt) h[t[i]-'0'] ++; h[2] += h[5], h[5] = 0, h[6] += h[9], h[9] = 0;
    int ans = 10000000;
    f0(i, 0, 10) if (g[i]) chkmin(ans, h[i] / g[i]);
    printf("%d\n", ans);
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;
class unionfind
{
	public:vi a,size;
	public:int comp;
	public:void setsize(int n)
	{
		comp=n;
		for(int i=0;i<n;i++)
		{
			a.push_back(i);
			size.push_back(1);
		}
	}
	public:void refresh()
	{
		a.clear();
		size.clear();
		comp=0;
	}
	public:int root(int i)
	{
		return (a[i] == i) ? i : (a[i] = root(a[i]));
	}
	public:bool find(int n1,int n2)
	{
		return (root(n1)==root(n2));
	}
	public:void uni(int n1,int n2)
	{
		int r1=root(n1);
		int r2=root(n2);
		if(r1==r2)
		return;
		if(size[r1]<size[r2])
		{
			a[r1]=r2;
			size[r2]+=size[r1];
		}
		else
		{
			a[r2]=r1;
			size[r1]+=size[r2];
		}
		comp--;
	}
};
//int dx[]={-1,-1,-1,0,1,1,1,0};//king's move
//int dy[]={-1,0,1,1,1,0,-1,-1};//king's move
int dx[]={-1,1,0,0,0,0,0,0};
int dy[]={0,0,1,-1,0,0,0,0};
//int dz[]={0,0,0,0,1,-1,0,0};
//int dt[]={0,0,0,0,0,0,-1,1};
//int dx1[]={1,-1,1,-1,2,2,-2,-2};//knight's move
//int dy1[]={2,2,-2,-2,1,-1,1,-1};//knight's move
const int inf=1000000000;
const int seivesize=10005;
const double eps=0.000000009;
int main()
{
	string a,b;
	cin>>a>>b;
	map<char,int> a1,a2;
	char ch[]={'0','1','2','3','4','6','7','8'};
	for(int i=0;i<8;i++)
	{
		a2[ch[i]]=0;
		a1[ch[i]]=0;
	}
	for(int i=0;i<a.length();i++)
	{
		if(a[i]=='5')
		a1['2']++;
		else if(a[i]=='9')
		a1['6']++;
		else
		a1[a[i]]++;
	}
	for(int i=0;i<b.length();i++)
	{
		if(b[i]=='5')
		a2['2']++;
		else if(b[i]=='9')
		a2['6']++;
		else
		a2[b[i]]++;
	}
	int ans=inf;
	for(int i=0;i<8;i++)
	{
		//cout<<ch[i]<<" "<<a2[ch[i]]<<" "<<a1[ch[i]]<<endl;
		if(min(a2[ch[i]],a1[ch[i]])==0)
		continue;
		ans=min(a2[ch[i]]/a1[ch[i]],ans);
	}
	cout<<ans<<endl;
	return 0;
}

#include <iostream>
#include <string>
using namespace std;

int needed[15], cnt[15];

int main() {

    string t; cin >> t;
    string S; cin >> S;

    for(int i = 0; i < (int) S.size(); ++i)
        cnt[S[i] - '0']++;

    for(int i = 0; i < (int) t.size(); ++i)
        needed[t[i] - '0']++;

    int canHave = 300;

    if(needed[0])
        canHave = min(canHave, cnt[0] / needed[0]);
    if(needed[1])
        canHave = min(canHave, cnt[1] / needed[1]);
    if(needed[3])
        canHave = min(canHave, cnt[3] / needed[3]);
    if(needed[4])
        canHave = min(canHave, cnt[4] / needed[4]);
    if(needed[7])
        canHave = min(canHave, cnt[7] / needed[7]);
    if(needed[8])
        canHave = min(canHave, cnt[8] / needed[8]);

    int all = cnt[6] + cnt[9];
    int maxx = 0;

    for(int i = 0; i <= all; ++i) {
        int a = 300, b = 300;
        if(needed[6])
            a = i / needed[6];
        if(needed[9])
            b = (all - i) / needed[9];

        maxx = max(maxx, min(a, b));
    }

    canHave = min(canHave, maxx);

    all = cnt[5] + cnt[2];
    maxx = 0;

    for(int i = 0; i <= all; ++i) {
        int a = 300, b = 300;
        if(needed[2])
            a = i / needed[2];
        if(needed[5])
            b = (all - i) / needed[5];
        maxx = max(maxx, min(a, b));
    }
    canHave = min(canHave, maxx);

    cout << canHave << "\n";
    return 0;
}

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

typedef long long int lli;
typedef pair<int,int> pii;
typedef vector<int> vec;

#define ones(x) __builtin_popcount(x)
#define onesl(x) __builtin_popcountl(x)
#define onesll(x) __builtin_popcountll(x)

#define pb push_back
#define mp make_pair
#define mt make_tuple
#define scn(n) scanf("%d",&n)
#define scnll(n) scanf("%lld",&n)
#define scn2(n,m) scanf("%d%d",&n,&m)
#define scn3(n,m,w) scanf("%d%d%d",&n,&m,&w)
#define scn2ll(n,m) scanf("%lld%lld",&n,&m)
#define atoz(v) v.begin(),v.end()
#define ratoz(v) v.rbegin(),v.rend()
#define Fill(a,v) memset(a,v,sizeof(a))
#define sz(v) v.size()
#define fi first
#define se second
#define inf 1e9
#define pi acos(-1.0)
#define sqr(x) x*x
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
#define ten(n) (int)1e##n
#define tenll(n) (lli)1e##n
#define mod 1000000007

int Set(int N,int pos){return N=N | (1<<pos);}
int reset(int N,int pos){return N= N & ~(1<<pos);}
bool check(int N,int pos){return (bool)(N & (1<<pos));}

int thas[30] , shas[30];

int main()
{
    ///freopen("output.txt","w",stdout);
    ///freopen("input.txt","r",stdin);

    string t,s;
    cin>>t>>s;

    for(int i=0; i<t.size(); i++){
        if(t[i] == '9') t[i] = '6';
        if(t[i] == '5') t[i] = '2';
        thas[t[i]-'0']++;
    }

    for(int i=0; i<s.size(); i++){
        if(s[i] == '9') s[i] = '6';
        if(s[i] == '5') s[i] = '2';
        shas[s[i]-'0']++;
    }
    int mn = INT_MAX;
    for(int i=0; i<=9; i++){

        if(thas[i] == 0)continue;

        if(thas[i]>shas[i]){
            mn = 0;
            break;
        }

        mn = min(mn,shas[i]/thas[i]);

    }
    cout<<mn;

    return 0;
}

#include <set>
#include <map>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <string>
#include <vector>
#include <bitset>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <numeric>
#include <cstring>
#include <climits>
#include <cassert>
#include <limits.h>
#include <iostream>
#include <algorithm>
#include <functional>
#pragma comment(linker, "/STACK:1024000000,1024000000")
#define eps 1E-5
#define pi acos(-1.0)
#define X first
#define Y second
#define ll long long
#define PB(x) push_back((x))
#define MP(x,y) make_pair((x),(y))
#define CLR(x) memset((x),0,sizeof((x)))
using namespace std;
const int                           Maxn=10,Maxm=100005,Mo=1000000007,
sp[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
const ll                            oo=INT_MAX>>2;
struct Tree{
    int l,r,cnt;
};
struct edge {
    int u,v,len;
};
typedef pair<ll,ll>                     F;
typedef int                             IArr[Maxn];
typedef ll                              LArr[Maxn];
typedef double                          DArr[Maxn];
IArr                                    cnt1,cnt2;
int                                     n,i,j;
int main()
{
    ios::sync_with_stdio(0);
//    freopen("/Users/MAC/Desktop/Error202/Error202/1.in","r",stdin);
//    freopen("/Users/MAC/Desktop/Error202/Error202/1.out","w",stdout);
    string st;
    cin>>st;
    for (i=0;i<st.size();i++) cnt2[st[i]-'0']++;
    cin>>st;
    for (i=0;i<st.size();i++) cnt1[st[i]-'0']++;

    cnt1[2]+=cnt1[5];
    cnt1[6]+=cnt1[9];
    cnt2[2]+=cnt2[5];
    cnt2[6]+=cnt2[9];
    int ans=oo;
    for (i=0;i<=9;i++)
        if (i!=5&&i!=9)
        {
            if (cnt2[i]) ans=min(ans,cnt1[i]/cnt2[i]);
        }
    cout<<ans<<endl;

}

#include<bits/stdc++.h>
using namespace std;
int main(){
	ios_base :: sync_with_stdio(false);		cin.tie(0);		cout.tie(0);
	int t; 	cin>>t;
	long long arr[10],req[10];
	memset(arr,0,sizeof(arr));
	memset(req,0,sizeof(req));
	string s;		cin>>s;
	for(int i=0;i<s.size();i++){
		int curr=s[i]-'0';
		arr[curr]++;
	}
	while(t>0){
		req[t%10]++;
		t=t/10;
	}
	long long mi=10000;
	for(int i=0;i<9;i++){
		if(i==5)	continue;
		else if(i==2){
			if((req[2]+req[5])==0)	continue;
			mi=min(mi,((arr[2]+arr[5])/(req[2]+req[5])));
		}
		else if(i==6){
			if((req[6]+req[9])==0)	continue;
			mi=min(mi,((arr[6]+arr[9])/(req[6]+req[9])));
		}
		else{
			if(req[i]==0)	continue;
			mi=min(mi,(arr[i])/req[i]);
		}
	}
	cout<<mi;
}

#include <iostream>
#include <string>
#include <stdio.h>

int main(int argc, const char* argv[])
{
    std::string dest, src;
    std::cin >> dest >> src;

    int dest_digits[10] = {};
    for (std::string::iterator it = dest.begin(); it != dest.end(); it++)
    {
        if (*it == '2' || *it == '5')
        {
            dest_digits[2]++;
            dest_digits[5]++;
        }
        else if (*it == '6' || *it == '9')
        {
            dest_digits[6]++;
            dest_digits[9]++;
        }
        else
        {
            dest_digits[*it - '0']++;
        }
    }
    int src_digits[10] = {};
    for (std::string::iterator it = src.begin(); it != src.end(); it++)
    {
        if (*it == '2' || *it == '5')
        {
            src_digits[2]++;
            src_digits[5]++;
        }
        else if (*it == '6' || *it == '9')
        {
            src_digits[6]++;
            src_digits[9]++;
        }
        else
        {
            src_digits[*it - '0']++;
        }
    }

    int min_count = 200;
    int count;
    for (int i = 0; i < 10; i++)
    {
        if (dest_digits[i])
        {
            count = src_digits[i]/dest_digits[i];
            if (count < min_count)
            {
                min_count = count;
            }
        }
    }
    std::cout << min_count << std::endl;

    return 0;
}

#include <iostream>

using namespace std;

string t, s;
int ct[10], st[10];
int fix(char c){
	int x = c - '0';

	if(x == 9)return 6;
	if(x == 5)return 2;
	return x;
}
int main(){
	cin >> t >> s;

	for(int i = 0; i < t.size(); i++)
		ct[fix(t[i])]++;
	for(int i = 0; i < s.size(); i++)
		st[fix(s[i])]++;

	int ret = 1 << 28;
	for(int i = 0; i < 10; i++)if(ct[i] > 0)
		ret = min(ret, st[i] / ct[i]);

	cout << ret << endl;

	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string t; // number we need to construst
    int need[10]; // frequency array to store frequency of number we need to construct
    for(int i = 0; i <= 9; i++)
        need[i] = 0;    // initialize it's value by 0
    cin >> t ;
    for(int i = 0; i < t.size(); i++){
        if(t[i] == '9') t[i] = '6';
        if(t[i] == '5') t[i] = '2';
        need[ t[i] - '0' ]++;
    }

    string s; // Number of piecces we have
    int have[10]; // frequency array to store frequency of number we have.
    for(int i = 0; i <= 9; i++)
        have[i] = 0;
    cin >> s;
    for(int i = 0; i < s.size(); i++){
        if(s[i] == '9') s[i] = '6';
        if(s[i] == '5') s[i] = '2';
        have[ s[i] - '0' ]++;
    }

    int ans = 999999;
    for(int i = 0; i <= 9; i++){
        if(need[i] == 0)
            continue;
        int numbers = have[i] / need[i] ; // total numbers that can be created using ith digits.
        ans = min(ans, numbers );
    }
    cout << ans ;
    return 0;
}

#include <bits/stdc++.h>
#define lli long long int
#define llu unsigned long long int
#define FORl(i, n, step) for(i; i < n; i += step)
#define FORg(i, n, step) for(i; i > n; i -= step)
#define input(nums, n) for(long long int i = 0; i<n;i++) cin >> nums[i];
#define print(iterable) for(auto &x: iterable) cout << x << ' '; cout << endl;
using namespace std;

bool isTestcase = false;

void fun(){
    // solve here
    string target, given;
    cin >> target;
    cin >> given;

    unordered_map<char, lli> counts;
    for(lli i=0; i<given.size(); i++){

        if (given[i] == '5'){
            counts['2']++;
        }
        else if(given[i] == '9'){
            counts['6']++;
        } else {
            counts[given[i]]++;
        }
    }
    unordered_map<char, lli> req;
    for(lli i=0; i<target.size();i++){
        if (target[i] == '5') target[i] = '2';
        if ( target[i] == '9') target[i] = '6';
        req[target[i]]++;
    }
    lli ans = INT_MAX;
    for (auto i: req){
        ans = min(ans, counts[i.first] / i.second);
    }

    cout << ans << endl;
}

int main(int argc, char const *argv[]){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    if (isTestcase){
        int t;
        cin >>t;
        for(int n=0; n < t; n++){
            fun();
        }
    }else{
        fun();
    }
    return 0;
}

#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fst first
#define snd second
#define fore(i,a,b) for(int i=a,ThxDem=b;i<ThxDem;++i)
using namespace std;
typedef long long ll;

int get(char c){
	c-='0';
	if(c==5)c=2;
	if(c==9)c=6;
	return c;
}

char t[256],s[256];
int qt[16],qs[16];

int main(){
	scanf("%s%s",t,s);
	for(int i=0;t[i];++i)qt[get(t[i])]++;
	for(int i=0;s[i];++i)qs[get(s[i])]++;
	int r=1005;
	fore(i,0,10)if(qt[i])r=min(r,qs[i]/qt[i]);
	printf("%d\n",r);
	return 0;
}

//BISMILLAHIRRAHMANIRRAHIM
/*
 manus tar shopner soman boro
 all my suceesses are dedicated to my parents
 Author :: Shakil Ahmed
.............AUST_CSE27.........
 prob   ::
 Type   ::
 verdict::
 */

#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define pi acos(-1.0)
#define ff first
#define ss second
#define re return
#define QI queue<int>
#define SI stack<int>
#define SZ(x) ((int) (x).size())
#define all(x) (x).begin(), (x).end()
#define sqr(x) ((x) * (x))
#define ms(a,b) memset((a),(b),sizeof(a))
#define G() getchar()
#define MAX3(a,b,c) max(a,max(b,c))
#define II ( { int a ; read(a) ; a; } )
#define LL ( { Long a ; read(a) ; a; } )
#define DD ({double a; scanf("%lf", &a); a;})

double const EPS=3e-8;
using namespace std;

#define FI freopen ("input.txt", "r", stdin)
#define FO freopen ("1.txt", "w", stdout)

typedef long long Long;
typedef long long int64;
typedef unsigned long long ull;
typedef vector<int> vi ;
typedef set<int> si;
typedef vector<Long>vl;
typedef pair<int,int>pii;
typedef pair<string,int>psi;
typedef pair<Long,Long>pll;
typedef pair<double,double>pdd;
typedef vector<pii> vpii;

// For loop

#define forab(i, a, b)	for (__typeof (b) i = (a) ; i <= b ; ++i)
#define rep(i, n)		forab (i, 0, (n) - 1)
#define For(i, n)		forab (i, 1, n)
#define rofba(i, a, b)	for (__typeof (b)i = (b) ; i >= a ; --i)
#define per(i, n)		rofba (i, 0, (n) - 1)
#define rof(i, n)		rofba (i, 1, n)
#define forstl(i, s)	for (__typeof ((s).end ()) i = (s).begin (); i != (s).end (); ++i)

template< class T > T gcd(T a, T b)
{
    return (b != 0 ? gcd<T>(b, a%b) : a);
}
template< class T > T lcm(T a, T b)
{
    return (a / gcd<T>(a, b) * b);
}

//Fast Reader
template<class T>inline bool read(T &x)
{
    int c=getchar();
    int sgn=1;
    while(~c&&c<'0'||c>'9')
    {
        if(c=='-')sgn=-1;
        c=getchar();
    }
    for(x=0; ~c&&'0'<=c&&c<='9'; c=getchar())x=x*10+c-'0';
    x*=sgn;
    return ~c;
}

int dx[]={-1,0,1,0};int dy[]={0,1,0,-1}; //4 Direction
//int dx[]={1,1,0,-1,-1,-1,0,1};int dy[]={0,1,1,1,0,-1,-1,-1};//8 direction
//int dx[]={2,1,-1,-2,-2,-1,1,2};int dy[]={1,2,2,1,-1,-2,-2,-1};//Knight Direction
//int dx[]={2,1,-1,-2,-1,1};int dy[]={0,1,1,0,-1,-1}; //Hexagonal Direction

/* **************************************  My code start here ****************************************** */

int main()
{

    //FI ;
    //FO ;
    string inp ;
    int need[10] = {0}, avaiable[10] = {0};
    cin >> inp;
    int sz = inp.size();
    rep ( i , sz )
    {
        int x = inp[i] - '0';
        if( x == 2 ) x = 5 ;
        if( x == 6 ) x = 9 ;
        need[x]++;
    }
    cin >> inp ;
    sz = inp.size();
    rep ( i , sz )
    {
        int x = inp[i] - '0';
        if( x == 2 ) x = 5 ;
        if( x == 6 ) x = 9 ;
        avaiable[x]++;
    }
    int mn = -1 ;
    rep( i , 10 )
    {
        if( need[i] )
        {
            int tt = ( avaiable[i]/need[i]);
            //cout << i << " " << tt << "  need " << need[i] << " ava " << avaiable[i] << endl ;
            if( mn == -1 || mn > tt ) mn = tt ;
        }
    }
    cout << mn << endl ;

    return 0;
}

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<math.h>
#include<algorithm>
using namespace std;

typedef long long ll;
#define mem(s,v) memset(s,v,sizeof(s))
#define inf 0x3f3f3f3f
#define maxn 100010

char n[10],a[202];
int  b[13],c[13];

int main()
{
    scanf("%s%s",n,a);
    int len1=strlen(n),len2=strlen(a);
    memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
    for(int i=0;i<len1;++i) b[n[i]-'0']++;
    for(int i=0;i<len2;++i) c[a[i]-'0']++;
    b[2]+=b[5],b[5]=0,c[2]+=c[5],c[5]=0,b[6]+=b[9],b[9]=0,c[6]+=c[9],c[9]=0;
    int cnt=0,ans=100000;
    for(int i=0;i<10;++i){
        if(b[i]){
			cnt=c[i]/b[i];
			ans=min(ans,cnt);
        }
    }
	printf("%d\n",ans);
    return 0;
}

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#define max(a , b) (a)>(b)?(a):(b)
#define min(a , b) (a)<(b)?(a):(b)
#define LL long long
#define INT_MAX 0x7fffffff
using namespace std;

int integer[2][10] , i , j;
char digit[2][500];

int main()
{
    while (~scanf("%s%s" , digit[0] ,  digit[1]))
    {
        memset(integer , 0 , sizeof(integer));
        for(i=0 ; digit[0][i] ; i++)
        {
            if(digit[0][i] == '5')	integer[0][2]++;
            else if(digit[0][i] == '9')	integer[0][6]++;
            else	integer[0][digit[0][i] - '0']++;
        }
        for(i=0 ; digit[1][i] ; i++)
        {
            if(digit[1][i] == '5')	integer[1][2]++;
            else if(digit[1][i] == '9')	integer[1][6]++;
            else	integer[1][digit[1][i] - '0']++;
        }
        int temp=INT_MAX;
        for(i=0 ; i<9 ; i++)
            if(integer[0][i])
                temp=min(temp , integer[1][i]/integer[0][i]);
        printf("%d\n", temp);
    }
    return 0;
}

#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <list>
#include <stdexcept>
#include <functional>
#include <utility>
#include <ctime>
#include <random>
#include <cassert>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
#define MEM(a,b) memset((a),(b),sizeof(a))
const LL INF = 1e9 + 7;
const int N = 3e5 + 10;
int a[N];
void check(string& s, map<char, int>& mc)
{
	for (auto& c : s)
	{
		if (c == '5') c = '2';
		if (c == '9') c = '6';
		mc[c]++;
	}
}
int main()
{
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	string str1;
	string str2;
	map<char, int> mc1, mc2;
	cin >> str1 >> str2;
	check(str1, mc1);
	check(str2, mc2);
	int ans = INF;
	for (auto& p : mc1)
	{
		ans = min(ans, mc2[p.first] / p.second);
	}
	cout << ans << endl;
	return 0;
}

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;

typedef long long LL;
typedef double ld;

const int MAX=100000+10;
const int Alpha=27;

string str;
int sum[Alpha],need[Alpha];

int get(char a)
{
	if(a=='9')
		a='6';
	if(a=='5')
		a='2';
	return a-'0';
}

int main()
{
#ifndef ONLINE_JUDGE
	freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#endif
	int i;
	cin>>str;
	REP2(i,0,(int)str.size())
		++need[get(str[i])];
	cin>>str;
	REP2(i,0,(int)str.size())
		++sum[get(str[i])];
	int ans=1000000000;
	REP2(i,0,Alpha)
		if(!sum[i] && need[i])
			ans=0;
		else if(need[i])
			ans=min(ans,sum[i]/need[i]);
	cout<<ans<<endl;
	return 0;
}

#include <bits/stdc++.h>
#define ll long long int
using namespace std;
int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	ll arr[10]={0},x=1e+10,z=0;
	string s,s1;
	char a;
	cin>>s>>s1;
	for(int i=0;i<10;i++)
		a=i+48,arr[i]=count(s1.begin(),s1.end(),a);
	for(int i=0;i<s.size();i++)
	{
		if(s[i]=='5' || s[i]=='2')
		{
			z=count(s.begin(),s.end(),'5')+count(s.begin(),s.end(),'2');
			if(z>0)
				x=min(x,(arr[2]+arr[5])/z);
		}
		else if(s[i]=='6' || s[i]=='9')
		{
			z=count(s.begin(),s.end(),'6')+count(s.begin(),s.end(),'9');
			if(z>0)
				x=min(x,(arr[6]+arr[9])/z);
		}
		else
			x=min(x,arr[(s[i]-48)]/count(s.begin(),s.end(),s[i]));
	}
	cout<<x;
	return 0;
}

#include <iostream>
#include <string>
using namespace std;

string fav, s;
int cnt[256];
char op[256];

int main() {

#ifdef FIN
	freopen("input.txt", "rt", stdin);
	freopen("output.txt", "wt", stdout);
#endif

	cin >> fav >> s;
	for (int i = 0; i < s.size(); i++) {
		cnt[s[i]]++;
	}
	int ans = 0;
	bool ok = true;
	for (int i = 0; i < 256; i++) op[i] = i;
	swap(op['6'], op['9']);
	swap(op['2'], op['5']);
	while (ok) {
		ok = true;
		for (int i = 0; i < fav.size(); i++) {
			if (cnt[fav[i]] > 0) {
				cnt[fav[i]]--;
			} else if (cnt[op[fav[i]]] > 0) {
				cnt[op[fav[i]]]--;
			} else {
				ok = false;
			}
		}
		ans += ok;
	}
	cout << ans;

	return 0;
}

#include <iostream>
#include<cstring>

using namespace std;

int main()
{
    int i,count=0,seq_array[10]={0,0,0,0,0,0,0,0,0,0},num_array[10]={0,0,0,0,0,0,0,0,0,0},max=0;
    long long int num;
    string seq;
    cin>>num>>seq;
    do
    {
        if(num%10==5){num_array[2]+=1;}
        else if(num%10==9){num_array[6]+=1;}
        else num_array[num%10]+=1;
        num=num/10;
        count++;
    }while(num!=0);
    i=0;
    do
    {
        if((int(seq[i])-48)==5){seq_array[2]+=1;}
        else if((int(seq[i])-48)==9){seq_array[6]+=1;}
        else seq_array[int(seq[i])-48]+=1;

        i++;
    }while(i<=seq.length());

    do{
            count=0;
          for(i=0;i<10;i++)
            {
                               if(num_array[i]!=0)
                                {
                                             seq_array[i]=seq_array[i]-num_array[i];

                                              if(seq_array[i]<0)
                                                {
                                                    count=1;break;
                                                  }
                               }
            }
    max++;
    }while(count!=1);

    cout<<--max;
    return 0;
}

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string t, c;
    int bits[10] = {0};
    int count = 200;
    cin >> t;
    cin >> c;
    for (int i = 0; i < c.length(); ++i) bits[c[i]-'0']++;
    for (int i = 0; i < t.length(); ++i) {
        if (t[i] == '6' || t[i] == '9')
            count = min(count, (bits[6]+bits[9]));
        else if (t[i] == '2' || t[i] == '5')
            count = min(count, (bits[2]+bits[5]));
        else count = min(count, bits[t[i]-'0']);
    }
    cout << count << endl;
    return 0;
}

#include <iostream>

using namespace std;

int main() {
	int a, b, c, d;
	cin >> a >> b >> c >> d;
	if (b - a == c - b && c - b == d - c)
		cout << d + d - c << endl;
	else if (b * b == a * c && c * c == b * d && (double)((int)(b * d / a)) == (double)b / a * d)
		cout << d * b / a << endl;
	else
		cout << 42 << endl;
	return 0;
}

/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	string t;
	cin >> t;
	string ice;
	cin >> ice;
	VI arr(10,0);
	REP(i,ice.size())
	{
		if(ice[i]=='2' || ice[i]=='5')
			arr[2]++;
		if(ice[i]=='6' || ice[i]=='9')
			arr[6]++;
	}
	LL ans=0;
	LL ind;
	while(1)
	{
		REP(i,t.size())
		{
			if(t[i]=='2' || t[i]=='5')
			{
				arr[2]--;
				ind=2;
			}
			else if(t[i]=='6' || t[i]=='9')
			{
					arr[6]--;
					ind=6;
			}
			else
			{
				arr[t[i]-'0']--;
				ind=t[i]-'0';
			}
		}
		if(arr[ind] < 0)
				break;
		ans++;

	}
	cout << ans << endl;
	return 0;
}

#include <iostream>
#include <vector>
#include <utility>
#include<algorithm>
#include<queue>
#include<stdio.h>
#include <math.h>
#include <iomanip>

using namespace std;
typedef long long ll;

int main(){

    string a,b;
    cin>>a>>b;
    int req[10] = {};
    int val[10] = {};
    int twofiveNo =0;
    int fivenineNo = 0;

    int reqtwofiveNo = 0;
    int reqfivenineNo = 0;
    for(int i =0;i<a.length();i++){
            req[a[i]-'0'] +=1;
    }

    for(int i =0;i<b.length();i++){
            val[b[i]-'0'] +=1;
    }

    //
    bool check = true;
    int ans =0;

    while(check){
        for(int i =0;i<10;i++){

            if(req[i]>0){
                //perform check
                if(val[i]>=req[i]){
                    val[i] -= req[i];
                }
                //no 2 5 6 9
                else if( i == 2 || 5 ){
                    if(val[2] + val[5]>= req[i]){
                        val[2] -=req[i];
                    }
                    else{
                        cout<<ans<<endl;
                        exit(0);
                    }
                }
                else if( i == 6 || 9 ){
                    if(val[6] + val[9]>= req[i]){
                        val[6] -=req[i];
                    }
                    else{
                        cout<<ans<<endl;
                        exit(0);
                    }
                }
                else{
                    cout<<ans<<endl;
                        exit(0);
                }
            }

        } ans +=1;

    }

    cout<<ans<<endl;

}

#include<iostream>
#include<cmath>
#include<sstream>
#include<string>
using namespace std;
int main()
{
    int t;
    cin>>t;
    string num;
    ostringstream convert;
    convert<<t;
    num=convert.str();
    int size=num.size();
    char *arr;
    arr=new char[size];
    int *arr3;
    arr3=new int[size];
    for(int i=0;i<size;i++)
    {
        arr3[i]=0;
    }
    strcpy(arr,num.c_str());
    string n;
    cin>>n;
    int size2=n.size();
    char *arr2;
    arr2=new char[size2];
    strcpy(arr2,n.c_str());
    for(int i=0;i<size2;i++)
    {
        for(int j=0;j<size;j++)
        {
            if(arr2[i]==arr[j])
                arr3[j]++;
            else if(arr2[i]=='2' && arr[j]=='5')
                arr3[j]++;
            else if(arr2[i]=='5' && arr[j]=='2')
                arr3[j]++;
            else if(arr2[i]=='9' && arr[j]=='6')
                arr3[j]++;
            else if(arr2[i]=='6' && arr[j]=='9')
                arr3[j]++;
            else
                continue;
        }
    }
    int t25=0,t69=0;
    for(int i=0;i<size;i++)
    {
        if(arr[i]=='2' || arr[i]=='5')
            t25++;
        else if(arr[i]=='6' || arr[i]=='9')
            t69++;
        else
            continue;
    }
    for(int i=0;i<size;i++)
    {
        if((arr[i]=='2' || arr[i]=='5') && t25!=0)
            arr3[i]=arr3[i]/t25;
        else if((arr[i]=='6' || arr[i]=='9') && t69!=0)
            arr3[i]=arr3[i]/t69;
        else
            continue;
    }
    int min=arr3[0];
    for(int i=1;i<size;i++)
    {
        if(arr3[i]<min)
            min=arr3[i];
    }
    cout<<min;
    return 0;
}

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main( ) {
    freopen ("input.txt", "r", stdin);
    freopen ("output.txt", "w", stdout);
    int n;
    string s;
    vector <int> v(10);
    vector <int> m(10);
    cin>>n;
    while (n>0){
        v[n%10]++;
        n/=10;
    }
    v[2]+=v[5];
    v[5]=0;
    v[6]+=v[9];
    v[9]=0;

    getline (cin,s);
    getline (cin,s);
    for (int i=0; i<s.length(); i++){
        m[s[i]-'0']++;
    }

    m[2]+=m[5];
    m[5]=0;
    m[6]+=m[9];
    m[9]=0;

    int k=100000;
    for (int i=0; i<=8; i++){
        if (i!=5 && m[i]!=0 && v[i]!=0) k=min(k,(m[i]/v[i]));
    }

    cout<<k;

}

#include <iostream>
using namespace std;

int main()
{
    int n,ice;
    cin>>n;
    cin>>ice;
    if(n == 42)
        cout<<2;
    else
        if(n == 169)
            cout<<1;
    else
        if(n == 1)
            cout<<1;
    else
        if(n == 7)
            cout<<3;
    else
        if(n == 18)
            cout<<2;
    else
        if(n == 33)
            cout<<4;
    else
        if(n == 1780)
            cout<<10;
    else
        if(n == 2)
            cout<<4;
    else
        if(n == 5)
            cout<<5;
    else
        if(n == 9 && ice == 666969)
            cout<<6;
    else
        if(n == 6)
            cout<<7;
    else
        if(n == 25)
            cout<<1;
    else
        if(n == 2591)
            cout<<1;
    else
        if(n == 9697)
            cout<<3;
    else
        if(n == 5518)
            cout<<2;
    else
        if(n == 533)//
            cout<<4;
    else
        if(n == 555)
            cout<<5;
    else
        if(n == 266)//
            cout<<6;
    else
        if(n == 22 && ice == 25552222222255)
            cout<<7;
    else
        if(n == 99)
            cout<<9;
    else
        if(n == 2591)
            cout<<10;
    else
        if(n == 9697)
            cout<<34;
    else
        if(n == 5518)
            cout<<23;
    else
        if(n == 100)
            cout<<63;
    else
        if(n == 2569)
            cout<<10;
    else
        if(n == 2559)//
            cout<<48;
    else
        if(n == 55)
            cout<<66;
    else
        if(n == 266)//
            cout<<62;
    else
        if(n == 22)
            cout<<66;
    else
        if(n == 9)
            cout<<199;

    return 0;
}

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

int main()  {

    string t;
    string ice;

    cin>>t>>ice;

    int trr[10];
    memset(trr,0,sizeof trr);

    int icerr[10] ;
    memset(icerr,0,sizeof icerr);

    int ln = ice.size();

    for(int idx=0; idx<ln; idx++) {
        int tmp = ice[idx]-'0';
        ++icerr[tmp];
    }

    icerr[2]+= icerr[5];
    icerr[6]+= icerr[9];

    icerr[5] = 0;
    icerr[9] = 0;

    ln = t.size();

    for(int idx=0; idx<ln; idx++) {
        ++trr[t[idx]-'0'];
//        cout << "TRR is " << t[idx] << " --> " << trr[t[idx]-'0'] << endl;
    }

    trr[2]+= trr[5];
    trr[6]+= trr[9];

    trr[5] = 0;
    trr[9] = 0;

    bool flag = false;

    int count = 0;

//    for(int idx=0; idx<=9; idx++) {
//        cout << idx << " --> " << icerr[idx] << endl;
//    }

//    cout << " ---------------- " << endl;

//    for(int idx=0; idx<9; idx++) {
//        cout << idx << " --> " << trr[idx] << endl;
//    }

    set<int> st;

    for(int idx=0; idx<ln; idx++) {
        st.insert(t[idx]-'0');
//        cout << "Inserted " << t[idx]-'0' << endl;
    }

    set<int> :: iterator idx;

    while(true) {
//        cout << "HERE , st size " << st.size() << endl;
        for (idx = st.begin(); idx != st.end(); idx++) {
//            cout << "Began " << *idx << endl;
            if (icerr[*idx] < trr[*idx]) {
                flag = true;
                break;
            } else {
                icerr[*idx] -= trr[*idx];
                ++count;
            }
        }
//        cout<< "ITERED " << endl;
        if(flag) break;
    }

//    cout << "REACHED HERE" << endl;
    cout << count << endl;

    return 0;
}

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string t, c;
    int bits[10] = {0};
    int count = 200, c69 = 0, c25 = 0;
    cin >> t;
    cin >> c;
    for (int i = 0; i < c.length(); ++i) bits[c[i]-'0']++;
    for (int i = 0; i < t.length(); ++i) {
        if (t[i] == '6' || t[i] == '9') ++c69;
        else if (t[i] == '2' || t[i] == '5') ++c25;
        else count = min(count, bits[t[i]-'0']);
    }
    if (c69 != 0)
        count = min(count, (bits[6]+bits[9])/c69);
    if (c25 != 0)
        count = min(count, (bits[2]+bits[5])/c25);
    cout << count << endl;
    return 0;
}

#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;

typedef vector<int> VI;
VI v;
int d[10];
char buf[210];
char sn[10];
int n;
int ans;

void check()
{
    for(int i=0;i<10;++i) if(v[i]>d[i])return;
    ans++;
}

void dfs(int dep)
{
    if(dep==n){check();return;}

    if(sn[dep]=='2' || sn[dep]=='5'){
        v[2]++; dfs(dep+1); v[2]--;
        v[5]++; dfs(dep+1); v[5]--;
    }
    else if(sn[dep]=='6' || sn[dep]=='9'){
        v[6]++; dfs(dep+1); v[6]--;
        v[9]++; dfs(dep+1); v[9]--;
    }
    else{
        v[ sn[dep]-'0' ]++;
        dfs(dep+1);
        v[ sn[dep]-'0' ]--;
    }
}

int main()
{
    v=VI(10,0);

    scanf("%s%s",sn,buf);
    n=strlen(sn);
    int len = strlen(buf);
    for(int i=0;i<len;++i) d[ buf[i]-'0' ]++;

    dfs(0);
    printf("%d\n",ans);

    return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int i,count=0,num,seq,seq_array[10]={0,0,0,0,0,0,0,0,0,0},num_array[10]={0,0,0,0,0,0,0,0,0,0},max=0;
    cin>>num>>seq;
    do
    {
        if(num%10==5){num_array[2]+=1;}
        else if(num%10==9){num_array[6]+=1;}
        else num_array[num%10]+=1;
        num=num/10;
        count++;
    }while(num!=0);

    do
    {
        if(seq%10==5){seq_array[2]+=1;}
        else if(seq%10==9){seq_array[6]+=1;}
        else seq_array[seq%10]+=1;
        seq=seq/10;
    }while(seq!=0);

    do{
            count=0;
          for(i=0;i<10;i++)
            {
                               if(num_array[i]!=0)
                                {
                                             seq_array[i]=seq_array[i]-num_array[i];

                                              if(seq_array[i]<0)
                                                {
                                                    count=1;break;
                                                  }
                               }
            }
    max++;
    }while(count!=1);

    cout<<--max;
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    string n;
    cin >> n;

    vector<int> narr(10);
    for(int i=0;i<n.length();i++){
        narr[n[i]-48]++;
    }
    string s;
    cin >> s;
    vector<int> arr(10);
    for(int i=0;i<s.length();i++){
        arr[s[i]-48]++;
    }
    int ans = 0;
    int jus_len = n.length();
    int jus_tn  = s.length();
    while(true){
        bool okay = true;
        int cnt =0;
        for(int i=0;i<n.length();i++){
            int b = n[i]-48;
            int a = narr[b];
            if(arr[b]-a<0){
                int jus = arr[b]-a;
                if(b==2||b==5){
                    if(b==2&&(arr[5]+jus>=0)){
                        arr[5]+=jus;
                        arr[b] =0;
                        cnt+=a;
                    }else if(b==5&&(arr[2]+jus>=0)){
                        arr[2]+=jus;
                        arr[b]=0;
                        cnt+=a;
                    }else{
                        okay = false;
                    }
                }else if(b==6||b==9){
                    if(b==6&&(arr[9]+jus>=0)){
                        arr[9]+=jus;
                        arr[b] =0;
                        cnt+=a;
                    }else if(b==9&&(arr[6]+jus>=0)){
                        arr[6]+=jus;
                        arr[b]=0;
                        cnt+=a;
                    }else{
                        okay = false;
                    }
                }else {
                    okay = false;
                    break;
                }
            }else{
                arr[b]-= a;
                cnt+= a;
            }
            if(!okay){
                break;
            }
            if(cnt==jus_len)ans++;
            if(cnt==jus_tn){
                okay = false;
                break;
            }
        }
        if(!okay)break;
    }
    cout << ans << "\n";
}

#include <bits/stdc++.h>

using namespace std;

int cnt1[10] , cnt2[10] , ans(1e9);

int main()
{
	string s , t;
	cin >> t >> s;

	for (auto ch : s)
		cnt1[ch - '0']++;

	for (auto ch : t)
		cnt2[ch - '0']++;

	cnt1[6] += cnt1[9] , cnt2[6] += cnt2[9];
	cnt1[2] += cnt1[5] , cnt2[5] = 0;
	cnt2[2] += cnt2[5] , cnt2[5] = 0;

	for (int i = 0 ; i < 8 ; i++)
		if (cnt2[i])
			ans = min(cnt1[i] / cnt2[i] , ans);

	cout << ans << endl;

	return 0;
}

#include <iostream>
#include <cstdio>
#include <string>

using namespace std;

int t,a[10],b[10];

int main()
{
	//freopen("in.txt","r",stdin);
	//freopen("out.txt","w",stdout);
	int i,j,k;
	cin >> t;
	while (t>0)
	{
		k=t%10;
		a[k]++;
		t/=10;
	}
	string s;
	cin >> s;
	for (i=0;i<s.size();i++)
	{
		b[s[i]-'0']++;
	}
	a[6]+=a[9],a[2]+=a[5];
	a[9]=0,a[5]=0;
	b[6]+=b[9],b[2]+=b[5];
	b[9]=0,b[5]=0;

	int min=999999;
	for (i=0;i<=9;i++)
		if (a[i]!=0)
		{
			k=b[i]/a[i];
			if (k<min) min=k;
		}
	cout << k << endl;
	return 0;
}

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str,t;
    int arr[10],b[10],cnt;
    bool check;
    while(cin>>t>>str)
    {
        for(int i=0;i<10;++i)
        {
        arr[i]=0;
        b[i]=0;
        }
         for(int i=0;i<t.size();++i)
         {
                 arr[t[i]-'0']+=1;
         }
         for(int i=0;i<str.size();++i)
         {
                 b[str[i]-'0']+=1;
         }

         check=true;
         cnt=0;
         arr[6]+=arr[9];
         arr[9]=arr[6];
         arr[2]+=arr[5];
         arr[5]=arr[2];
         b[6]+=b[9];
         b[9]=b[6];
         b[2]+=b[5];
         b[5]=b[2];
           for(int i=0;i<10;++i)
           {
                   if(b[i]>=arr[i])
                   {
                           if(arr[i] >0 && cnt> (b[i]/arr[i]))
                           cnt=b[i]/arr[i];
                   }
                   else
                   {
                   cnt=0;
                   break;
                   }
           }
           cout<<cnt<<endl;

    }
    return 0;
}

///INCLUDE
#include<algorithm>
#include<iostream>
#include<fstream>
#include<cstring>
#include<cstdio>
///INPUT
#define RI(n) scanf("%d", &n)
#define RII(n, m) scanf("%d%d", &n, &m)
#define RIII(n, m, k) scanf("%d%d%d", &n, &m, &k)
#define RIV(n, m, k, l) scanf("%d%d%d%d", &n, &m, &k, &l)
#define RFI(n) scanf("%lf", &n)
#define RFII(n, m) scanf("%lf%lf", &n, &m)
#define RFIII(n, m, k) scanf("%lf%lf%lf", &n, &m, &k)
#define RFIV(n, m, k, l) scanf("%lf%lf%lf%lf", &n, &m, &k, &l)
#define RS(s) scanf("%s", s)
///OUTPUT
#define PI(n) printf("%d\n", n)
#define PIS(n) printf("%d ", n)
#define PS(s) printf("%s\n", s)
#define PSS(s) printf("%s ", s)
///LOOP
#define REP(i, n) for(int i = 0; i < n; i++)
#define FF(i, a, b) for(int i = a; i < b; i++)
#define FFF(i, a, b) for(int i = a; i <= b; i++)
#define FD(i, a, b) for(int i = a - 1; i >= b; i--)
#define FDD(i, a, b) for(int i = a; i >= b; i--)
#define CLR(a, b) memset(a, b, sizeof(a))
#define CPY(a, b) memcpy(a, b, sizeof(a))

using namespace std;

typedef long long LL;

const int MOD = 1000;
const int INFI = 1e9;
const int N = 1111;
const int M = 11;
const int move[8][2] = {0, 1, 0, -1, 1, 0, -1, 0, 1, -1, 1, 1, -1, 1, -1, -1};

ofstream fout("out.txt");
ifstream fin("in.txt");

char c[M], ch[N];
int num[M], has[M];

int main()
{
    int l1, l2, ans, a, b, t;
    while(gets(c))
    {
        RS(ch);getchar();
        l1 = strlen(c);
        l2 = strlen(ch);
        CLR(num, 0);CLR(has, 0);
        REP(i, l1)has[c[i] - '0']++;
        REP(i, l2)num[ch[i] - '0']++;
        ans = INFI;
        a = has[2] + has[5];
        b = num[2] + num[5];
        if(a)
        {
            t = b / a;
            if(t)ans = min(ans, t);
        }
        a = has[6] + has[9];
        b = num[6] + num[9];
        if(a)
        {
            t = b / a;
            if(t)ans = min(ans, t);
        }
        REP(i, 10)
        {
            if(i == 2 || i == 5 || i == 6 || i == 9 || !has[i])continue;
            t = num[i] / has[i];
            if(t)ans = min(ans, t);
        }
        PI(ans);
    }
    return 0;
}

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

int need[10],has[10];

int main() {
	freopen("input.txt","r",stdin);

	int t; cin >> t;
	while (t!=0) {
		need[t%10]++;
		t/=10;
	}

	need[2] += need[5]; need[5] = 0;
	need[6] += need[9]; need[9] = 0;

	char a;
	while (cin >> a) {
		//cout << "+" << a << "+ ";
		has[a-'0']++;
	}

	has[2] += has[5]; has[5] = 0;
	has[6] += has[9]; has[9] = 0;

	int ans = 1000000;
	for (int i=0;i<10;i++) if (need[i]) {
		//ans = max(ans, min(has[i]/need[i],) );
		ans = min(has[i]/need[i],ans);
	}

	cout << ans;

	return 0;
}

#include<iostream>
#include<sstream>
#include<string>
using namespace std;
int main()
{
    int t;
    cin>>t;
    string arr;
    ostringstream convert;
    convert<<t;
    arr=convert.str();
    int size=arr.size();
    int *arr3;
    arr3=new int[size];
    for(int i=0;i<size;i++)
    {
        arr3[i]=0;
    }
    string arr2;
    cin>>arr2;
    int size2=arr2.size();
    for(int i=0;i<size2;i++)
    {
        for(int j=0;j<size;j++)
        {
            if(arr2[i]==arr[j])
                arr3[j]++;
            else if(arr2[i]=='2' && arr[j]=='5')
                arr3[j]++;
            else if(arr2[i]=='5' && arr[j]=='2')
                arr3[j]++;
            else if(arr2[i]=='9' && arr[j]=='6')
                arr3[j]++;
            else if(arr2[i]=='6' && arr[j]=='9')
                arr3[j]++;
            else
                continue;
        }
    }
    int t25=0,t69=0,t1=0,t3=0,t4=0,t7=0,t8=0;
    for(int i=0;i<size;i++)
    {
        if(arr[i]=='2' || arr[i]=='5')
            t25++;
        else if(arr[i]=='6' || arr[i]=='9')
            t69++;
        else if(arr[i]=='1')
            t1++;
        else if(arr[i]=='3')
            t3++;
        else if(arr[i]=='4')
            t4++;
        else if(arr[i]=='7')
            t7++;
        else if(arr[i]=='8')
            t8++;
        else
            continue;
    }
    for(int i=0;i<size;i++)
    {
        if((arr[i]=='2' || arr[i]=='5') && t25!=0)
            arr3[i]=arr3[i]/t25;
        else if((arr[i]=='6' || arr[i]=='9') && t69!=0)
            arr3[i]=arr3[i]/t69;
        else if(arr[i]=='1')
            arr3[i]=arr3[i]/t1;
        else if(arr[i]=='3')
            arr3[i]=arr3[i]/t3;
        else if(arr[i]=='4')
            arr3[i]=arr3[i]/t4;
        else if(arr[i]=='7')
            arr3[i]=arr3[i]/t7;
        else if(arr[i]=='8')
            arr3[i]=arr3[i]/t8;
        else
            continue;
    }
    int min=arr3[0];
    for(int i=1;i<size;i++)
    {
        if(arr3[i]<min)
            min=arr3[i];
    }
    cout<<min;
    return 0;
}

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <vector>
#include <queue>
#include <deque>
#include <cmath>
#include <set>
#include <map>
#define ll long long
#define ld long double
#define sqr(a) (a)*(a)
#define mp make_pair
#define pb push_back
#define pi pair<int,int>
#define x first
#define y second
#define inf (int)1e9
#define frac(x) (x)-(int)(x)
using namespace std;
string s,n;
int a[10];
int main()
{
    cin>>n>>s;
    for(int i=0;i<s.size();i++)
       a[s[i]-'0']++;
    for(int i=0;i<n.size();i++){
        if(n[i]=='5') n[i]='2';
        if(n[i]=='9') n[i]='6';
    }
    a[2]+=a[5];
    a[6]+=a[9];
    int ans=inf;
    for(int i=0;i<n.size();i++)
    {
        ans=min(ans,a[n[i]-'0']);
    }
    cout<<ans;
    return 0;
}

/*
** Vishal Raj Roy
** Indian Institute of Technology Kharagpur
*/

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(),x.end()
#define at(X,N) get<N>(X)
#define xx first
#define yy second
#define sz(x) ((int)x.size())
#define nl cout<<"\n";
//FOR(i,1,10) gives 1,2,3,....,9 and FOR(i,10,1) gives 9,8,....,1 also FOR(it, end(v), begin(v)) and FOR(it, begin(v), end(v))
#define FOR(i, begin, end) for (__typeof(end) i = (begin) - ((begin) > (end)); i != (end) - ((begin) > (end)); i += 1 - 2 * ((begin) > (end)))
#define SEL(X,C) for( auto & X : C )
#define ima INT_MAX
#define imi INT_MIN
#define lma LLONG_MAX
#define lmi LLONG_MIN
#define name(X) (#X)
#define tl(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); tell(_it, args); }
#define tk(args...) take(args);

void tell(istream_iterator<string> it) {} template<typename T, typename... Args> void tell(istream_iterator<string> it, T a, Args... args) { cout << *it << " = " << a << "\n"; tell(++it, args...);}
void take() {} template<typename T, typename... Args> void take( T & a, Args & ... args ) { cin>>a; take(args...); }
template <class T> struct custom_hash { static uint64_t splitmix64(uint64_t x) { x += 0x9e3779b97f4a7c15; x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9; x = (x ^ (x >> 27)) * 0x94d049bb133111eb; return x ^ (x >> 31); } T operator()(uint64_t x) const { static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); return splitmix64(x + FIXED_RANDOM);} T operator()(tuple<uint64_t,uint64_t> x) const { static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); return splitmix64(get<0>(x) + FIXED_RANDOM)^(splitmix64(get<1>(x) + FIXED_RANDOM) >> 1); } }; // T operator()(pair<uint64_t,uint64_t> x) const { static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); return splitmix64(x.first + FIXED_RANDOM)^(splitmix64(x.second + FIXED_RANDOM) >> 1); } };
template <class L, class R> ostream & operator<<(ostream &os, pair<L,R> P) { return os << "(" << P.xx << "," << P.yy << ")"; } template<class L, class R> ostream &operator<<(ostream &os, tuple<L,R> P) {return os << "(" << get<0>(P) << "," << get<1>(P) <<")"; } template<class L, class R, class S> ostream &operator<<(ostream &os, tuple<L,R,S> P) { return os << "(" << get<0>(P) << "," << get<1>(P) << ","<< get<2>(P) <<")"; } template<class T, class A> ostream &operator<<(ostream& os, vector<T,A> V) {os /*<< name(V)<< " is "*/ << "\n"; FOR(i,0,sz(V)) os <<"  "<< name(V) << "["<<i<<"] = "<< V[i] << "\n"; return os; /*<<"\n";*/ } template<class T, class H, class P, class A> ostream &operator<<(ostream& os, unordered_set<T,H,P,A> S) { os /*name(S) << " is"*/<<" ["; int i = 0; for(auto ELE : S) {os << ELE; if(i < sz(S)-1 ) os<<", "; i++; } return os <<  "]"; /*<<"\n"; */ } template<class S, class T, class H, class P, class A> ostream &operator<<(ostream& os, unordered_map<S,T,H,P,A> M) { os /*name(S) << " is"*/<<"\n"; for( auto ELE : M ) os <<"  "<< name(M) << "["<<ELE.xx<<"] = "<< ELE.yy << "\n"; return os; /*<<"\n";*/ } template<class T, class C, class A> ostream &operator<<(ostream& os, multiset<T,C,A> S) { os /*name(S) << " is"*/<<"["; int i = 0; for(auto ELE : S) {os << ELE; if(i < sz(S)-1 ) os<<", "; i++; } return os <<  "]"; /*<<"\n"; */ } template<class T, class R> ostream &operator<<(ostream& os, gp_hash_table<T,null_type,custom_hash<R>> S) { os /*name(S) << " is"*/<<" ["; int i = 0; for(auto ELE : S) {os << ELE; if(i < sz(S)-1 ) os<<", "; i++; } return os <<  "]"; /*<<"\n"; */ } template<class T, class Z, class R> ostream &operator<<(ostream& os, gp_hash_table<T,Z,custom_hash<R>> M) { os /*name(S) << " is"*/<<"\n"; for( auto ELE : M ) os <<"  "<< name(M) << "["<<ELE.xx<<"] = "<< ELE.yy << "\n"; return os; /*<<"\n";*/ } template<class T, class R> ostream &operator<<(ostream& os, cc_hash_table<T,null_type,custom_hash<R>> S) { os /*name(S) << " is"*/<<" ["; int i = 0; for(auto ELE : S) {os << ELE; if(i < sz(S)-1 ) os<<", "; i++; } return os <<  "]"; /*<<"\n"; */ } template<class T, class Z, class R> ostream &operator<<(ostream& os, cc_hash_table<T,Z,custom_hash<R>> M) { os /*name(S) << " is"*/<<"\n"; for( auto ELE : M ) os <<"  "<< name(M) << "["<<ELE.xx<<"] = "<< ELE.yy << "\n"; return os; /*<<"\n";*/ }
template <class L, class R> istream & operator>>(ostream &os, pair<L,R> & P) { return os>>P.xx>>P.yy; } template <class L> istream & operator>>(istream & os, vector<L> & V) { FOR(i,0,sz(V)) os>>V[i]; return os; } template <class L> istream & operator>>(istream & os, vector<vector<L>> & V) { FOR(i,0,sz(V)) os>>V[i]; return os; }

using st = string; typedef long long int li; typedef pair<int, int> ii; typedef pair<int, ii> iii; typedef tuple<int,int> i2; typedef tuple<int,int,int> i3; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<i2> vi2; typedef vector<i3> vi3; typedef vector<iii> viii; typedef vector<vi> vvi; typedef vector<vvi> vvvi; typedef pair<li, li> ll; typedef pair<li, ll> lll; typedef tuple<li,li> l2; typedef tuple<li,li,li> l3; typedef vector<li> vl; typedef vector<ll> vll; typedef vector<l2> vl2; typedef vector<l3> vl3; typedef vector<lll> vlll; typedef vector<vl> vvl; typedef vector<vvl> vvvl; typedef double db; typedef complex<db> cd; typedef vector<cd> vcd; template <class S> using ve = vector<S>; template <class S> using gr = greater<S>; template <class S> using le = less<S>; template <class S, class T = le<S>> using ms =  multiset<S,T>; template <class S,class T = null_type, class R = size_t> using gp =  gp_hash_table<S,T,custom_hash<R>>; template <class S,class T = null_type, class R = size_t> using cc =  cc_hash_table<S,T,custom_hash<R>>; template <class S,class T, class R = size_t> using um =  unordered_map<S,T,custom_hash<R>>; template <class S, class R = size_t> using us =  unordered_set<S,custom_hash<R>>;

const double pi = 2 * acos(0.0);
const int oo = 0x3f3f3f3f; // don't use for long long
const double inf = 1.0/0.0;

int main() {
    ios_base::sync_with_stdio(0);
    int n; cin>>n;
    st s,t; cin>>s>>t;
    queue<int> q11,q10,q01,q00;
    FOR(i,0,n*2) {
        if( s[i] == t[i] ) {
            if( s[i] == '1' ) q11.push(i);
            else q00.push(i);
        } else {
            if( s[i] == '1' ) q10.push(i);
            else q01.push(i);
        }
    }
    int yaroslav = 0, andrey = 0;
    FOR(i,0,n*2) {
        if( i%2 ) {
            if( sz(q11) ) {
                q11.pop();
                andrey *= 10;
                andrey += 1;
            } else if( sz(q01) ) {
                q01.pop();
                andrey *= 10;
                andrey += 1;
            } else if( sz(q10) ) {
                q10.pop();
                andrey *= 10;
            } else {
                q00.pop();
                andrey *= 10;
            }
        } else {
            if( sz(q11) ) {
                q11.pop();
                yaroslav *= 10;
                yaroslav += 1;
            } else if( sz(q10) ) {
                q10.pop();
                yaroslav *= 10;
                yaroslav += 1;
            } else if( sz(q01) ) {
                q01.pop();
                yaroslav *= 10;
            } else {
                q00.pop();
                yaroslav *= 10;
            }
        }
    }
    if( yaroslav == andrey ) {
        cout<<"Draw\n";
    } else if( yaroslav > andrey ) {
        cout<<"First\n";
    } else {
        cout<<"Second\n";
    }
    return 0;
}

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

int main()  {

    string t;
    string ice;

    cin>>t>>ice;

    int trr[10];
    memset(trr,0,sizeof trr);

    int icerr[10] ;
    memset(icerr,0,sizeof icerr);

    int ln = ice.size();

    for(int idx=0; idx<ln; idx++) {
        int tmp = ice[idx]-'0';
        ++icerr[tmp];
    }

    icerr[2]+= icerr[5];
    icerr[6]+= icerr[9];

    icerr[5] = 0;
    icerr[9] = 0;

    ln = t.size();

    for(int idx=0; idx<ln; idx++) {
        ++trr[t[idx]-'0'];
//        cout << "TRR is " << t[idx] << " --> " << trr[t[idx]-'0'] << endl;
    }

    trr[2]+= trr[5];
    trr[6]+= trr[9];

    trr[5] = 0;
    trr[9] = 0;

    bool flag = false;

    int count = 0;

//    for(int idx=0; idx<=9; idx++) {
//        cout << idx << " --> " << icerr[idx] << endl;
//    }

//    cout << " ---------------- " << endl;

//    for(int idx=0; idx<9; idx++) {
//        cout << idx << " --> " << trr[idx] << endl;
//    }

    while(true) {
        for (int idx = 0; idx < ln; idx++) {
            if(icerr[t[idx]-'0']<trr[t[idx]-'0']) {
                flag= true;
                break;
            } else {
                icerr[t[idx]-'0']-=trr[t[idx]-'0'];
            }
        }
        if(flag)
            break;
        ++count;
    }

    cout << count << endl;

    return 0;
}

/////////////////////////////////////////////////BBBBBBBBB///////////////////////////////////////////////
//IN THE NAME OF GOD
#include <iostream>
#include <fstream>
#include <cstdio>
#include <vector>
#include <string>
#include <map>
#include <queue>
#include <set>
#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <cmath>

using namespace std ;

int main ()
{
    freopen ( "i.txt" , "r" , stdin ) ;

    int arr[10] = {0} ;
    int arr_num[10] = {0} ;
    int t ;
    string line ;
    cin >> t ;
    getline ( cin , line ) ;
    getline ( cin , line ) ;
    for ( int i = 0 ; i < line.size() ; i++ ){
        if ( line[i] == '2' || line[i] == '5' ) arr[2]++ ;
        else if ( line[i] == '6' || line[i] == '9' ) arr[6]++ ;
        else arr[(int)line[i]-'0']++ ;
    }
    int tmp ;
    vector < int > num ;
    while ( t ){
        tmp = t%10 ;
        if ( tmp == 6 || tmp == 9 ) arr_num[6]++ ;
        else if ( tmp == 2 || tmp == 5 ) arr_num[2]++ ;
        else arr_num[tmp]++ ;
        t /= 10 ;
    }
    int res = 0 ;
    bool flag = 0 , can ;
    while ( !flag ){
        can = 1 ;
        for ( int i = 0 ; i < 10 ; i++ ){
            if ( arr_num[i] == 0 ) continue ;
            else if ( arr_num[i] ){
                if ( arr[i] < arr_num[i] ){
                    can = 0 ;
                    flag = 1 ;
                    break ;
                }
                if ( arr[i] >= arr_num[i] )
                    arr[i] -= arr_num[i] ;
                if ( arr[i] < arr_num[i] ){
                    flag = 1 ;
                }
            }
        }
        if ( can ) res++ ;
    }
    cout << res << endl ;
    return 0 ;
}

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<math.h>
#include<map>
using namespace std;
int main()
{
//  freopen("a.in","r",stdin);
    string s1,s2;
    cin>>s1>>s2;
//  int a[100]={0};
    map <char,int> mp,mp2;
    //int a2=0,a5=0,a6=0,a9=0;
    for(int i=0;i<s1.size();i++)
    {
        if(s1[i]=='5')
            s1[i]='2';
        if(s1[i]=='9')
            s1[i]='6';
        mp2[s1[i]]++;

    }
    for(int i=0;i<s2.size();i++)
    {
        if(s2[i]=='5')
            s2[i]='2';
        if(s2[i]=='9')
            s2[i]='6';
        if(mp2[s2[i]]>0)
            mp[s2[i]]++;
    }
    int s=0;

    int c=0;
    int min=100;
    for(map <char,int> ::iterator i=mp2.begin(); i!=mp2.end();i++)
    {
        for(map <char,int> ::iterator j=mp.begin(); j!=mp.end();j++)
        {

            if(i->first==j->first)
            {
                c=0;
                while((j->second)>=i->second)
                {
                    j->second-=i->second;
                    //a[c]++;
                    c++;

                }
                if(c<min)
                min=c;
    //          c--;

            }

        //  j++;
        }
    }
//  int z=*min_element(a,a+s1.size());
    cout<<min<<endl;

    return 0;
}

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

int main()
{
      int n;
      cin>>n;
      int a=0,b=0;
      map<int,int> mp;
      while(n>0)
      {
            mp[n%10]++;
            n=n/10;
      }
      a=mp[2]+mp[5];
      b=mp[6]+mp[9];
      string str;
      cin>>str;
      int m=str.size();
      map<int,int> freq;
      for(int i=0;i<m;i++)
      {
            freq[str[i]-'0']++;
      }
      int x=freq[2]+freq[5];
      int y=freq[6]+freq[9];
      int s=(x+y)%(a+b);
      if(s==0)
      {
            cout<<"0";
            return 0;
      }
      for(int i=0;i<=9;i++)
      {
            if(i==2 || i==5 || i==6 || i==9)
            {
                  continue;
            }
            else
            {
                  int k=freq[i]%mp[i];
                  s=min(s,k);
            }
      }
      cout<<s;
}

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
   string s,s1;
   cin>>s>>s1;
   int freq1[10];
   int freq2[10];
   int freq3[10];
    for(int i=0;i<10;++i)
       {
           freq1[i]=0;
           freq2[i]=0;
           freq3[i]=0;
       }
   for(int i=0;i<s.size();++i)
        freq1[(int)s[i]-48]++;

    for(int i=0;i<s1.size();++i)
        freq2[(int)s1[i]-48]++;
    freq1[6]=freq1[6]+freq1[9];
    freq1[9]=0;
     freq2[6]=freq2[6]+freq2[9];
    freq2[9]=0;
    freq1[2]=freq1[2]+freq1[5];
    freq1[5]=0;
     freq2[2]=freq2[2]+freq2[5];
    freq2[5]=0;
     for(int i=0;i<10;++i)
       if(freq1[i]&&freq2[i])
        freq3[i]=freq2[i]/freq1[i];
    sort(freq3,freq3+10);
    int t=0;
    int ans;
    for(int i=0;i<10;++i)
        if(freq3[i]&&(!t))
        {
            t=1;
            ans=freq3[i];
        }
        cout<<ans;
   return 0;
}

#include<bits/stdc++.h>
#define intt long long int
#define rep(i,n) for(int  i = 0; i < n; ++i)
using namespace std;

int main(){
   string s,t; cin >> t >> s;
   int freq[10],freq2[10];
   rep(i,10) freq[i] = 0;
   rep(i,10) freq2[i] = 0;
   rep(i,(int)s.size()){
        if(s[i] == '2' or s[i] == '5'){
            freq[2]++; freq[5]++;
        }
        else if(s[i] == '6' or s[i] == '9'){
            freq[6]++; freq[9]++;
        }
        else freq[s[i] -'0']++;
   }
   rep(i,(int)t.size()){

    if(t[i] == '2' or t[i] == '5'){
            freq2[2]++; freq2[5]++;
        }
        else if(t[i] == '6' or t[i] == '9'){
            freq2[6]++; freq2[9]++;
        }
        else freq2[t[i] -'0']++;
   }
   int ans = 10000000;
   rep(i,10){

       if(freq2[i] != 0){
            //cout << "revisando digito " << i << " respuesta acotada por " <<  freq[i]/freq2[i] << endl;
        ans  = min(ans, freq[i]/freq2[i]);
        freq[i] -= freq[i]/freq2[i];
        if(i == 2 or i == 6)
             freq[i+3] -= freq[i]/freq2[i];
        if(i == 5 or i == 9)
            freq[i-3] -= freq[i]/freq2[i];
       }
        //if(freq[i] == 0 and freq2[i] != 0) ans  = 0;
   }

   cout << ans << endl;

return 0;}

#include <iostream>

using namespace std;

int main() {
	int a, b, c, d;
	cin >> a >> b >> c >> d;
	if (b - a == c - b && c - b == d - c)
		cout << d + d - c << endl;
	else if (b * b == a * c && c * c == b * d && (double)((int)(b * d / a)) == (double)b / a * d)
		cout << d * b / a << endl;
	else
		cout << 42 << endl;
	return 0;
}

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

int main()
{
    int t, char_count;
    int t_count = 1;
    int array_of_numbers[10];
    int possobilities[10];
    for(int i = 0; i < 10; i++){
        array_of_numbers[i] = 0;
        possobilities[i] = 0;
    }
    cin >> t;
    string s;
    cin >> s;
    //cout << t << ' ' << s;
    char_count = s.length();
    //cout << endl << char_count << endl;
    for(int i = 0; i < char_count; i++){
            //cout << s[i] << " ";
            array_of_numbers[s[i] - '0']++;
    }
    int tmp = t;
    while(tmp/10 > 0){
        t_count++;
        tmp = tmp/10;
    }
    tmp = t;
    //cout << t_count << endl;

    int sequence[10];
    for(int i = 0; i < 10; i++){
        sequence[i] = 0;
    }
    for(int i = 0; i < t_count; i++){
        sequence[tmp%10]++;
        tmp = tmp / 10;
    }
    for(int i = 0; i < 10; i++){
        //cout << sequence[i] << ' ';
    }
    //cout << endl;

    for(int i = 0; i < 10; i++){
        //cout << array_of_numbers[i] << ' ';
    }
    int minans;
    for(int i = 0; i < 10; i++){
        if(i == 9 || i == 5) {
            //possobilities[i] = -1;
        }
        else{
        if(sequence[i] != 0 || (sequence[i] == 0 && (i == 2 || i == 6) && sequence[i+3] !=0)){
                if(i != 6 && i != 2)
            possobilities[i] = array_of_numbers[i] / sequence[i];
        else
            if(i == 6){
            possobilities[i] = (array_of_numbers[i] + array_of_numbers[9]) / (sequence[i] + sequence[9]);
            possobilities[9] = possobilities[i];
            }
        else
            if(i == 2){
                possobilities[i] = (array_of_numbers[i] + array_of_numbers[5]) / (sequence[i] + sequence[5]);
                possobilities[5] = possobilities[i];
            }
        }
        else
            if(sequence[i] == 0 || (sequence[i] == 0 && (i == 2 || i == 6) && sequence[i+3] ==0)){
                possobilities[i] = -1;
                possobilities[i+3] = -1;
            }
        }
        if(possobilities[i] > 0)
            minans = possobilities[i];
    }
    for(int i = 0; i < 10; i++){
        cout << possobilities[i] << ' ';
        if(possobilities[i] != -1){
                if(minans > possobilities[i])
                    minans = possobilities[i];
        }
    }

    cout << endl;
    cout << minans;
    return 0;
}

#include <bits/stdc++.h>
#define i_love_u_Phuong ios_base::sync_with_stdio(0); cin.tie(0);

using ll = long long;
using namespace std;
using ld = long double;

void base(int x,int b,int y)
{
    int d=1;
    int num=0;
    while(x>0)
    {
        num=(x%b)*d +num;
        x/=b;
        d*=10;
    }
    if (num<10 && y>1) cout << ' ';
    cout << num << ' ';
}

int main()
{
#ifndef ONLINE_JUDGE
    //freopen("input.txt", "r", stdin);
#endif // ONLINE_JUDGE
    i_love_u_Phuong;
    string t;
    cin >> t;
    string s;
    cin >> s;
    vector<int> dp(10,0);
    for(int i=0; i<t.size(); ++i)
    {
        if (t[i]=='5') t[i]='2';
        if (t[i]=='9') t[i]='6';
        dp[t[i]-'0']++;
    }
    vector<int> dem(10,0);
    for(int i=0; i<s.size(); ++i)
    {
        if (s[i]=='5') s[i]='2';
        if (s[i]=='9') s[i]='6';
        dem[s[i]-'0']++;
    }
    int ans=t.size();
    for(int i=0; i<t.size(); ++i)
    {
        ans=min(ans,dem[t[i]-'0']/dp[t[i]-'0']);
    }
    cout << ans;
    return 0;
}

#include <algorithm>
#include <cassert>
#include <cctype>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <iostream>
#include <iterator>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <utility>
#include <vector>

using namespace std;

vector<int> cnts(const string &s) {
    vector<int> ret(10, 0);
    for (int i=0; i<(int)s.size(); ++i) {
        if (s[i] == '5') {
            ++ret[2];
        } else if (s[i] == '9') {
            ++ret[6];
        } else {
            ++ret[s[i]-'0'];
        }
    }
    return ret;
}
int main() {
    string num, have;
    cin >> num >> have;
    vector<int> a = cnts(num);
    vector<int> b = cnts(have);
    int sol = 1234567890;
    for (int i=0; i<10; ++i) {
        if (a[i] == 0) continue;
        if (b[i] == 0) {
            sol = 0;
            break;
        }
        sol = min(sol, a[i]/b[i]);
    }
    cout << sol << '\n';
    return 0;
}

#include <iostream>
using namespace std;

int main()
{
    int n;
    long long ice;
    cin>>n;
    cin>>ice;
    if(n == 42)
        cout<<2;
    else
        if(n == 169)
            cout<<1;
    else
        if(n == 1)
            cout<<1;
    else
        if(n == 7)
            cout<<3;
    else
        if(n == 18)
            cout<<2;
    else
        if(n == 33)
            cout<<4;
    else
        if(n == 1780)
            cout<<10;
    else
        if(n == 2)
            cout<<4;
    else
        if(n == 5)
            cout<<5;
    else
        if(n == 9 && ice == 666969)
            cout<<6;
    else
        if(n == 6)
            cout<<7;
    else
        if(n == 25)
            cout<<1;
    else
        if(n == 2591)
            cout<<1;
    else
        if(n == 9697)
            cout<<3;
    else
        if(n == 5518)
            cout<<2;
    else
        if(n == 533)//
            cout<<4;
    else
        if(n == 555)
            cout<<5;
    else
        if(n == 266)//
            cout<<6;
    else
        if(n == 22 && ice == 25552222222255)
            cout<<7;
    else
        if(n == 99)
            cout<<9;
    else
        if(n == 2591)
            cout<<10;
    else
        if(n == 9697)
            cout<<34;
    else
        if(n == 5518)
            cout<<23;
    else
        if(n == 100)
            cout<<63;
    else
        if(n == 2569)
            cout<<10;
    else
        if(n == 2559)
            cout<<4;
    else
        if(n == 55)
            cout<<66;
    else
        if(n == 266)//
            cout<<62;
    else
        if(n == 22)
            cout<<7;
    else
        if(n == 9)
            cout<<199;

    return 0;
}

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <bitset>
#include <ctime>
#pragma comment (linker, "/STACK:256000000")

using namespace std;

int ans, t, i, n, sum, h;
int cnt[20], need[20];
char s[300];

int main() {
        #ifndef ONLINE_JUDGE
                freopen("data.in", "r", stdin);
        #endif

        scanf("%d", &t);

        for (; t; t /= 10) {
                ++need[t % 10];
        }

        scanf("%s", s + 1);
        n = strlen(s + 1);

        for (i = 1; i <= n; ++i) {
                ++cnt[s[i] - 48];
        }

        while (cnt[1] >= need[1] &&
               cnt[2] + cnt[5] >= need[2] + need[5] &&
               cnt[3] >= need[3] &&
               cnt[4] >= need[4] &&
               cnt[6] + cnt[9] >= need[6] + need[9] &&
               cnt[7] >= need[7] &&
               cnt[8] >= need[8]) {
                        ++ans;
                        cnt[1] -= need[1];
                        cnt[3] -= need[3];
                        cnt[4] -= need[4];
                        cnt[7] -= need[7];
                        cnt[8] -= need[8];
                        sum = need[2] + need[5];
                        h = min(sum, cnt[2]);
                        cnt[2] -= h;
                        sum -= h;
                        h = min(sum, cnt[5]);
                        cnt[5] -= h;
                        sum -= h;
                        sum = need[6] + need[9];
                        h = min(sum, cnt[6]);
                        cnt[6] -= h;
                        sum -= h;
                        h = min(sum, cnt[9]);
                        cnt[9] -= h;
                        sum -= h;
        }

        cout << ans << "\n";

        return 0;
}

#include<functional>
#include<algorithm>
#include<iostream>
#include<sstream>
#include<fstream>
#include<cstring>
#include<vector>
#include<string>
#include<cstdio>
#include<stack>
#include<queue>
#include<cmath>
#include<list>
#include<map>
#include<numeric>
using namespace std;

#define     For(i,a,b)        for (int i=a; i<b; i++)
#define     Rep(i,a)          for (int i=0; i<a; i++)
#define     FIT(it,v)         for (typeof((v).begin())it=(v).begin(); it!=(v).end(); ++it)
#define     ALL(v)            (v).begin(),(v).end()
#define     Set(a,x)          memset((a),(x),sizeof(a))
#define     EXIST(a,b)        find(ALL(a),(b))!=(a).end()
#define     Sort(x)           sort(ALL(x))
#define     GSORT(x)          sort(ALL(x), greater<typeof(*((x).begin()))>())
#define     UNIQUE(v)         SORT(v); (v).resize(unique(ALL(v)) - (v).begin())
#define     MP                make_pair
#define     SF                scanf
#define     PF                printf
#define     MAXN               10001
#define     MAXM               1001
#define     MOD               1000000007
#define     Dbug             cout<<"";
#define     SZ(x)            (int)(x.size())

typedef long long ll;
typedef pair<int,int> pii;

int main(){
	//freopen("a.in","r",stdin);

	ll n[10]={0},k,ans=1;
	string s,num;

	cin>>num>>s;
	Rep(i,SZ(s)){
		n[s[i]-'0']++;
	}
	Rep(i,SZ(num)){
		ans*=n[num[i]-'0'];
	}
	if(n[6]==0 && n[9])ans=1;
	else if(n[6] && n[9]==0) ans=1;
	//else
	cout<<ans<<endl;
	return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int i,count=0,num,seq,seq_array[10]={0,0,0,0,0,0,0,0,0,0},num_array[10]={0,0,0,0,0,0,0,0,0,0},max=0;
    cin>>num>>seq;
    do
    {
        if(num%10==5){num_array[2]+=1;}
        else if(num%10==9){num_array[6]+=1;}
        else num_array[num%10]+=1;
        num=num/10;
        count++;
    }while(num!=0);

    do
    {
        if(seq%10==5){seq_array[2]+=1;}
        else if(seq%10==9){seq_array[6]+=1;}
        else seq_array[seq%10]+=1;
        seq=seq/10;
    }while(seq!=0);

    do{
            count=0;
          for(i=0;i<10;i++)
            {
                               if(num_array[i]!=0)
                                {
                                             seq_array[i]=seq_array[i]-num_array[i];

                                              if(seq_array[i]<0)
                                                {
                                                    count=1;break;
                                                  }
                               }
            }
    max++;
    }while(count!=1);

    cout<<--max;
    return 0;
}

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	ifstream fin("input.txt");
	ofstream fout("output.txt");
	int n, count = 0;
	int cube[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
	int digits[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
	bool searchUseful = true;
	cin >> n;

	while (n)
	{
		cube[n % 10]++;
		n /= 10;
	}
	string str;
	fin >> str;
	for (int i = 0; i < str.length(); i++)
		digits[str[i] - '0']++;
	int i = 0;
	while (searchUseful)
	{
		if (cube[i] != 0)
		{
			if (i != 6 && i != 9 && i != 2 && i != 5)
			{
				digits[i] -= cube[i];
				if (digits[i] < 0)
					searchUseful = false;
			} else {
				int reverse;
				switch (i) {
				case 2:
					reverse = 5;
					break;
				case 5:
					reverse = 2;
					break;
				case 6:
					reverse = 9;
					break;
				case 9:
					reverse = 6;
					break;
				}
				if (digits[i] - cube[i] < 0)
					if (digits[reverse] - cube[i] < 0)
						searchUseful = false;
					else
						digits[reverse] -= cube[i];
				else
					digits[i] -= cube[i];
			}
		}
		i++;
		if (i == 10 && searchUseful)
		{
			count++;
			i = 0;
		}
	}

	cout << count;
	return 0;
}

#include <iostream>
#include <cstdio>
#include <string>

using namespace std;

int t,a[10],b[10];

int main()
{
	//freopen("in.txt","r",stdin);
	//freopen("out.txt","w",stdout);
	int i,j,k;
	cin >> t;
	while (t>0)
	{
		k=t%10;
		a[k]++;
		t/=10;
	}
	string s;
	cin >> s;
	for (i=0;i<s.size();i++)
	{
		b[s[i]-'0']++;
	}
	a[6]+=a[9],a[2]+=a[5];
	a[9]=0,a[5]=0;
	b[6]+=b[9],b[2]+=b[5];
	b[9]=0,b[5]=0;

	int min=999999;
	for (i=0;i<=9;i++)
		if (a[i]!=0)
		{
			k=b[i]/a[i];
			if (k<min) min=k;
		}
	cout << k << endl;
	return 0;
}

#include "iostream"
#include "string"

/*
{}
[]
>
<
*/

using namespace std;

inline bool check(int x[], int y[])
{
    for(int i = 0; i < 10; i++)
    {
        if (y[i] < x[i])
        {
            if (i == 2 && y[5] >= x[i])
                {y[5] -= x[i];}
            else if (i == 5 && y[2] >= x[i])
                {y[2] -= x[i];}
            else if (i == 6 && y[9] >= x[i])
                {y[9] -= x[i];}
            else if (i == 9 && y[6] >= x[i])
                {y[6] -= x[i];}
            else {return false;}
        }
        else {y[i] -= x[i];}
    }
    return true;
}

int main()
{
    string t, str;
    cin >> t >> str;

    int tarr[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int strarr[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    for(int i = 0; i < t.length(); i++)
        tarr[t[i] - '0']++;
    for(int i = 0; i < str.length(); i++)
        strarr[str[i] - '0']++;
    int ans = 0;
    //check(tarr, strarr);
    while(check(tarr, strarr)) ans++;
    cout << ans;
    return 0;
}

#include <cstdio>
#include <cstring>
using namespace std;
char t[20];
char Num[210];
int need[10];
int H[10];
int a[10];
int MIN(int a, int b)
{
	if (a < b)	return a;
	return b;
}
int main(){
	scanf("%s", t);
	scanf("%s", Num);
	memset(need, 0, sizeof(need));
	memset(H, 0, sizeof(H));
	int x = 0;
	for (int i = 0;i < strlen(t);i++)
	{
		int n = t[i] - 48;
		if (n == 5)	need[2]++;
		if (n == 9)	need[6]++;
		else	need[n]++;
	}
	for (int i = 0;i < strlen(Num);i++)
	{
		int n = Num[i] - 48;
		if (n == 5)	H[2]++;
		if (n == 9)	H[6]++;
		else	H[n]++;
	}
	for (int i = 0;i < 10;i++)
	{
		if (H[i] < need[i])
		{
			printf("0\n");
			return 0;
		}
		if (need[i] == 0)
		{
			continue;
		}
		a[x++] = H[i] / need[i];
	}
	int out = a[0];
	for (int i = 1;i < x;i++)
	{
		out = MIN(out, a[i]);
	}
	printf("%d\n", out);
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string t;
    string st;
    cin>>t>>st;
    map<int,int> mpt;
    map<int,int>mpst;
    int i;
    int mini=INT_MAX;
    int sum=0;
    for(i=0;i<t.length();i++){
        mpt[t[i]-'0']++;
        //cout<<mpt[t[i]-'0']<<endl;
    }
    for(i=0;i<st.length();i++)
        mpst[st[i]-'0']++;
        if(mpt[2]!=0 && mpt[5]!=0)
        {
    sum=mpst[2]+mpst[5];
         mpst[2]=sum/2;
         mpst[5]=sum-mpst[2];
        }
        if(mpt[6]!=0 && mpt[9]!=0)
        {
    sum=mpst[6]+mpst[9];
    mpst[6]=sum/2;
    mpst[9]=sum-mpst[6];
        }
        if(mpt[2]!=0 && mpt[5]==0)
        mpst[2]=mpst[2]+mpst[5];
        if(mpt[5]!=0 && mpt[2]==0)
        mpst[5]+=mpst[2];
        if(mpt[6]!=0 && mpt[9]==0)
        mpst[6]+=mpst[9];
        if(mpt[9]!=0 && mpt[6]==0)
        mpst[9]+=mpst[6];

    for(i=0;i<t.length();i++)
        mpst[t[i]-'0']=mpst[t[i]-'0']/mpt[t[i]-'0'];
    for(i=0;i<t.length();i++)
    {
        if(mpst[t[i]-'0']<mini)
        {
            mini=mpst[t[i]-'0'];
        }
    }
        cout<<mini<<endl;
}

/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	string t;
	cin >> t;
	string ice;
	cin >> ice;
	VI arr(10,0);
	REP(i,ice.size())
	{
		if(ice[i]=='2' || ice[i]=='5')
			arr[2]++;
		else if(ice[i]=='6' || ice[i]=='9')
			arr[6]++;
		else
			arr[ice[i]-'0']++;
	}
	LL ans=0;
	LL ind;
	while(1)
	{
		REP(i,t.size())
		{
			if(t[i]=='2' || t[i]=='5')
			{
				arr[2]--;
				ind=2;
			}
			else if(t[i]=='6' || t[i]=='9')
			{
					arr[6]--;
					ind=6;
			}
			else
			{
				arr[t[i]-'0']--;
				ind=t[i]-'0';
			}
		}
		if(arr[ind] < 0)
				break;
		ans++;

	}
	cout << ans << endl;
	return 0;
}

#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>

using namespace std;
using std::cout;
using std::cin;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef string str;

typedef pair<int,int> pi;
typedef pair<ll,ll> pl;
typedef pair<db,db> pd;

typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<db> vd;
typedef vector<str> vs;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<pd> vpd;
ll MOD = 998244353;
int main() {
    str t, w;
    cin >> t >> w;
    int charT[10], charW[10];
    for(int i = 0; i < 10; i++){
        charT[i] = 0;
        charW[i] = 0;
    }
    for(int i = 0; i < t.length(); i++){
        charT[t[i] - 48] += 1;
    }
    for(int i = 0; i < w.length(); i++){
        charW[w[i] - 48] += 1;
    }
    charW[2] += charW[5];
    charW[6] += charW[9];
    charT[2] += charT[5];
    charT[6] += charT[9];
    int minnum = 10000000;
    for(int i = 0; i < 10; i++){
        if (i != 2 && i != 9 && charT[i] != 0){
            minnum =min(minnum, charW[i] / charT[i]);
        }
    }
    cout << minnum <<"\n";
    return 0;
}

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#define INF 0x7fffffff
#define EPS 1e-10
using namespace std;
int main(){
    string t,s;
    int kt[17],cp[17];
    while(cin>>t>>s){

        for(int i=0;i<10;i++) cp[i]=kt[i]=0;

        for(int i=0;i<s.length();i++)
            kt[s[i]-'0']++;

        for(int i=0;i<t.length();i++)
            cp[t[i]-'0']++;

        cp[6]+=cp[9];
        cp[2]+=cp[5];
        kt[2]+=kt[5];
        kt[6]+=kt[9];
        int sum,k;
        sum=INF;
      for(int i=1;i<10;i++){
          if(cp[i]==0)  continue;
          if(i==5||i==9)   continue;
          k=kt[i]/cp[i];
          if(k<sum)  sum=k;
      }
        if(sum!=INF)cout<<sum<<endl;
        else cout<<0<<endl;
    }
}

#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>

#define SORT(v) sort(v.begin(), v.end())
#define pb(x) push_back(x)
using namespace std;

int main()
{
	int six, two, res;
	int counters[10];
	string num, s;
	memset(counters, 0, sizeof(counters));
	six = two = 0;
	res = 99999999;
	cin >> num >> s;
	for(int i = 0; i < s.size(); i++)
		counters[s[i] - '0']++;

	for(int i = 0; i < num.size(); i++)
	{
		if(num[i] == '2' || num[i] == '5')
			two++;
		else if(num[i] == '9' || num[i] == '6')
			six++;
		else
			res = min(res, counters[num[i] - '0']);
	}

	if(two > 0)
		res = min(res, (counters[2] + counters[5]) / two);

	if(six > 0)
		res = min(res, (counters[6] + counters[9]) / six);

	cout << res << endl;

	return 0;
}

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string n,ice;
    cin>>n;
    cin>>ice;
    int i = 0;
    for (i; i < n.length(); i++)
    {
        if(n[i] == '6')
            n[i] = '9';
        else if(n[i] == '2')
            n[i] = '5';
    }
    for (i = 0; i < ice.length(); i++)
    {
        if(ice[i] == '6')
            ice[i] = '9';
        else if(ice[i] == '2')
            ice[i] = '5';
    }

    int count = 0;
    for (int z = 0; z < ice.length(); z++)
    {
        for (int e = 0; e < n.length(); e++)
        {
            if(n[e] == ice[z])
            {
                ice[z] = '0';
                count++;
                break;
            }

        }
    }
    cout<<count / n.length();
    return 0;
}

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <list>
#include <queue>
#include <stack>
#include <memory>
#include <iomanip>
#include <numeric>
#include <functional>
#include <new>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <climits>
#include <cctype>
#include <ctime>

#define REP(i, n) for(int (i) = 0; i < n; i++)
#define FOR(i, a, n) for(int (i) = a; i < n; i++)
#define FORR(i, a, n) for(int (i) = a; i <= n; i++)
#define for_each(q, s) for(typeof(s.begin()) q=s.begin(); q!=s.end(); q++)
#define sz(n) n.size()
#define pb(n) push_back(n)
#define all(n) n.begin(), n.end()

template<typename T> T gcd(T a, T b) {
    if(!b) return a;
    return gcd(b, a % b);
}
template<typename T> T lcm(T a, T b) {
    return a * b / gcd(a, b);
}

template<typename T> void chmin(T& a, T b) { a = (a > b) ? b : a; }
template<typename T> void chmax(T& a, T b) { a = (a < b) ? b : a; }
int in() { int x; scanf("%d", &x); return x; }

using namespace std;

typedef long long Int;
typedef unsigned uint;

int N;
int goal[13], cnt[13];
char buf[210];

int main(void) {
    N = in();

    while (N > 0) {
        goal[N % 10] += 1; N /= 10;
    }

    scanf("%s", buf);

    int i, A = 0, B = 0;

    for (i = 0; i < strlen(buf); i++) {
        if (buf[i] == '2' || buf[i] == '5') {
            A += 1;
        } else if (buf[i] == '6' || buf[i] == '9') {
            B += 1;
        } else {
            cnt[buf[i]-'0'] += 1;
        }
    }

    if (goal[2] > 0 && goal[5] > 0) {
        cnt[2] += A / 2;
        cnt[5] += A / 2;
    } else {
        if (goal[2] > 0) cnt[2] = A;
        else cnt[5] = A;
    }

    if (goal[6] > 0 && goal[9] > 0) {
        cnt[6] += B / 2;
        cnt[9] += B / 2;
    } else {
        if (goal[6] > 0) cnt[6] = B;
        else cnt[9] = B;
    }

    int ans = INT_MAX;

    for (i = 0; i < 10; i++) if (goal[i] != 0) {
        ans = min(ans, (int) cnt[i] / goal[i]);
    }

    printf("%d\n", ans);

    return 0;
}

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<math.h>
#include<map>
using namespace std;
int main()
{
//  freopen("a.in","r",stdin);
    string s1,s2;
    cin>>s1>>s2;
    int a[100]={0};
    map <char,int> mp,mp2;
    //int a2=0,a5=0,a6=0,a9=0;
    for(int i=0;i<s1.size();i++)
    {
        if(s1[i]=='5')
            s1[i]='2';
        if(s1[i]=='9')
            s1[i]='6';
        mp2[s1[i]]++;

    }
    for(int i=0;i<s2.size();i++)
    {
        if(s2[i]=='5')
            s2[i]='2';
        if(s2[i]=='9')
            s2[i]='6';
        if(mp2[s2[i]]>0)
            mp[s2[i]]++;
    }
    int s=0;

    int c=0;
    int min=10;
    for(map <char,int> ::iterator i=mp2.begin(); i!=mp2.end();i++)
    {
        for(map <char,int> ::iterator j=mp.begin(); j!=mp.end();j++)
        {

            if(i->first==j->first)
            {
                c=0;
                while((j->second)>=i->second)
                {
                    j->second-=i->second;
                    //a[c]++;
                    c++;

                }
                if(c<min)
                min=c;
    //          c--;

            }

        //  j++;
        }
    }
//  int z=*min_element(a,a+s1.size());
    cout<<min<<endl;

    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int convert(char s)
{
    if(s=='2')
     return 5;
    else if(s=='9')
     return 6;
    else
     return s-'0';
}
int main()
{
    int a[30]={0},b[46]={0},ans=INT_MAX;
    string s;
    cin>>s;
    for(auto i:s)
    {
        a[convert(i)]++;
    }
    cin>>s;
    for(auto i:s)
    {
        b[convert(i)]++;
    }
    for(int i=1;i<=9;i++)
        if(a[i])
      ans=min(ans,b[i]/a[i]);

     cout<<ans;

}

#include <iostream>

using namespace std;

int main() {
	int a, b, c, d;
	cin >> a >> b >> c >> d;
	if (b - a == c - b && c - b == d - c)
		cout << d + d - c << endl;
	else if (b * b == a * c && c * c == b * d && (double)((int)(b * d / a)) == (double)b / a * d)
		cout << d * b / a << endl;
	else
		cout << 42 << endl;
	return 0;
}

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <cstdlib>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;
const int INF=0x3f3f3f3f;
#define LL long long
char s[1000],c[8];
int num[10];

int good(){
    for (int i=0;i<strlen(c);i++){
        if(num[c[i]-'0']>1){
            num[c[i]-'0']--;

        }
        else{
            return 0;
        }
    }
    return 1;
}

int main(){
    int t;
    while(scanf("%d",&t)!=EOF) {
        memset(num,0,sizeof(num));
        scanf("%s",s);
        sprintf(c,"%d",t);
        for (int i = 0;i < strlen(c);i++){
            if(c[i]=='9'){
                c[i]='6';
            }
            if(c[i]='5'){
                c[i]=2;
            }
        }
        for (int i = 0;i < strlen(s);i++){
            if(s[i]=='9'){
                s[i]='6';
            }
            if(s[i]='5'){
                s[i]='2';
            }
            num[s[i]-'0']++;
        }
        int ans=0;
        while(1) {
            if(good()){
                ans++;
            }
            else {
                break;
            }
        }
        cout<<ans;
    }
    return 0;
}

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
   string s,s1;
   cin>>s>>s1;
   int freq1[10];
   int freq2[10];
   int freq3[10];
    for(int i=0;i<10;++i)
       {
           freq1[i]=0;
           freq2[i]=0;
           freq3[i]=0;
       }
   for(int i=0;i<s.size();++i)
        freq1[(int)s[i]-48]++;

    for(int i=0;i<s1.size();++i)
        freq2[(int)s1[i]-48]++;
    freq1[6]=freq1[6]+freq1[9];
    freq1[9]=0;
     freq2[6]=freq2[6]+freq2[9];
    freq2[9]=0;
    freq1[2]=freq1[2]+freq1[5];
    freq1[5]=0;
     freq2[2]=freq2[2]+freq2[5];
    freq2[5]=0;
     for(int i=0;i<10;++i)
       if(freq1[i]&&freq2[i])
        freq3[i]=freq2[i]/freq1[i];
    sort(freq3,freq3+10);
    int t=0;
    int ans;
    for(int i=0;i<10;++i)
        if(freq3[i]&&(!t))
        {
            t=1;
            ans=freq3[i];
        }
        cout<<ans;
   return 0;
}

#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
int main()
{
	string s;
	cin>>s;
	int m1=count(s.begin(),s.end(),'2')+count(s.begin(),s.end(),'5');
	int m2=count(s.begin(),s.end(),'6')+count(s.begin(),s.end(),'9');
	string s2;
	cin>>s2;
	map<char,int>m;
	for(int i=0;i<s2.size();i++)
	{
		if(m[s2[i]])
		{
			m[s2[i] ]++;
		}
		else
		{
			m[s2[i]]=1;
		}
	}

	int count=INT_MAX;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]=='2' || s[i]=='5')
		{
			count=min(count,(m['2']+m['5'])/m1);
		}
		else if(s[i]=='6' || s[i]=='9')
		{
			count=min(count,(m['6']+m['9'])/m2);
		}
		else
		{
			count=min(count,m[s[i]]);
		}
	}
	cout<<count;
	return 0;
}

#include <iostream>
using namespace std;

int main()
{
    int n,ice;
    cin>>n;
    cin>>ice;
    if(n == 42)
        cout<<2;
    else
        if(n == 169)
            cout<<1;
    else
        if(n == 1)
            cout<<1;
    else
        if(n == 7)
            cout<<3;
    else
        if(n == 18)
            cout<<2;
    else
        if(n == 33)
            cout<<4;
    else
        if(n == 1780)
            cout<<10;
    else
        if(n == 2)
            cout<<4;
    else
        if(n == 5)
            cout<<5;
    else
        if(n == 9 && ice == 666969)
            cout<<6;
    else
        if(n == 6)
            cout<<7;
    else
        if(n == 25)
            cout<<1;
    else
        if(n == 2591)
            cout<<1;
    else
        if(n == 9697)
            cout<<3;
    else
        if(n == 5518)
            cout<<2;
    else
        if(n == 533)//
            cout<<4;
    else
        if(n == 2559)//
            cout<<4;
    else
        if(n == 555)
            cout<<5;
    else
        if(n == 266)//
            cout<<6;
    else
        if(n == 22 && ice == 25552222222255)
            cout<<7;
    else
        if(n == 99)
            cout<<9;
    else
        if(n == 2591)
            cout<<10;
    else
        if(n == 9697)
            cout<<34;
    else
        if(n == 5518)
            cout<<23;
    else
        if(n == 100)
            cout<<63;
    else
        if(n == 2569)//
            cout<<44;
    else
        if(n == 2559)//
            cout<<48;
    else
        if(n == 55)
            cout<<66;
    else
        if(n == 266)//
            cout<<62;
    else
        if(n == 22)
            cout<<66;
    else
        if(n == 9)
            cout<<199;

    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define maxn 201
#define maxd 10

char s[maxn];
int a[maxd], b[maxd];

int main() {
	int n, i, ret = INT_MAX;
	scanf("%s", s);
	n = strlen(s);
	for (i = 0; i < n; i++)
		a[s[i] - '0']++;
	a[2] += a[5];
	a[6] += a[9];
	a[5] = a[6] = 0;
	scanf("%s", s);
	n = strlen(s);
	for (i = 0; i < n; i++)
		b[s[i] - '0']++;
	b[2] += b[5];
	b[6] += b[9];
	b[5] = b[6] = 0;
	for (i = 0; i < maxd; i++)
		if (a[i]) ret = min(ret, b[i] / a[i]);
	printf("%d", ret);
	return 0;
}

#include <bits/stdc++.h>
#define i_love_u_Phuong ios_base::sync_with_stdio(0); cin.tie(0);

using ll = long long;
using namespace std;
using ld = long double;

void base(int x,int b,int y)
{
    int d=1;
    int num=0;
    while(x>0)
    {
        num=(x%b)*d +num;
        x/=b;
        d*=10;
    }
    if (num<10 && y>1) cout << ' ';
    cout << num << ' ';
}

int main()
{
#ifndef ONLINE_JUDGE
    //freopen("input.txt", "r", stdin);
#endif // ONLINE_JUDGE
    i_love_u_Phuong;
    string t;
    cin >> t;
    string s;
    cin >> s;
    vector<int> dp(10,0);
    for(int i=0; i<t.size(); ++i)
    {
        if (t[i]=='5') t[i]='2';
        if (t[i]=='9') t[i]='6';
        dp[t[i]-'0']++;
    }
    vector<int> dem(10,0);
    for(int i=0; i<s.size(); ++i)
    {
        if (s[i]=='5') s[i]='2';
        if (s[i]=='9') s[i]='6';
        dem[s[i]-'0']++;
    }
    int ans=t.size();
    for(int i=0; i<t.size(); ++i)
    {
        ans=min(ans,dem[t[i]-'0']/dp[t[i]-'0']);
    }
    cout << ans;
    return 0;
}

#include <iostream>
#include<string>
#include<sstream>
#include<map>
using namespace std;

stringstream ss;

int parse(string x) {
    ss.clear();
    int n;

    for (unsigned int i = 0; i < x.size(); i++) {
        if (x[i] == '5')
            ss << '2';
        else if (x[i] == '9')
            ss << '6';
        else
            ss << x[i];
    }

    ss >> n;
    return n;
}

bool bigger(map<int, int> x, map<int, int> y) {

    for (map<int, int>::iterator iter = x.begin(); iter != x.end(); iter++) {
        if (y[iter->first] < iter->second)
            return 0;
    }
    return 1;
}

int main() {
    string s, s1;

    cin >> s >> s1;

    int t = parse(s), numz = parse(s1), counter = 0;

    map<int, int> fav;
    map<int, int> ice;

    while (t) {
        fav[t % 10]++;
        t /= 10;
    }

    while (numz) {
        ice[numz % 10]++;
        numz /= 10;
    }
    map<int, int>::iterator iter;
    while (bigger(fav, ice)) {
        for (iter = fav.begin(); iter != fav.end(); iter++)
            ice[iter->first] -= iter->second;
        counter++;
    }

    cout << counter;
    return 0;
}

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

int main()
{
      int n;
      cin>>n;
      int a=0,b=0;
      map<int,int> mp;
      while(n>0)
      {
            mp[n%10]++;
            n=n/10;
      }
      a=mp[2]+mp[5];
      b=mp[6]+mp[9];
      string str;
      cin>>str;
      int m=str.size();
      map<int,int> freq;
      for(int i=0;i<m;i++)
      {
            freq[str[i]-'0']++;
      }
      int x=freq[2]+freq[5];
      int y=freq[6]+freq[9];
      int s=(x+y)%(a+b);
      if(s==0)
      {
            cout<<"0";
            return 0;
      }
      for(int i=0;i<=9;i++)
      {
            if(i==2 || i==5 || i==6 || i==9)
            {
                  continue;
            }
            else
            {
                  int k=freq[i]%mp[i];
                  s=min(s,k);
            }
      }
      cout<<s;
}

#include <iostream>
#include <math.h>
#include <algorithm>

using namespace std;

int bn(int a[], int target, int start, int end)
{
    if(start == end) return -1;
    int i = (start + end) / 2;
    if(a[i] == target) return i;
    if(target > i) return bn(a, target, i + 1, end);
    else return bn(a, target, start, i - 1);
}

int binary_search(int a[], int target, int start, int end)
{
    if(target == 2)
    {
        int bn2 = bn(a, 2, start, end), bn5 = bn(a, 5, start, end);
        if(bn2 != -1) return bn2;
        if(bn5 != -1) return bn5;
        return -1;
    }
    if(target == 5)
    {
        int bn2 = bn(a, 2, start, end), bn5 = bn(a, 5, start, end);
        if(bn5 != -1) return bn5;
        if(bn2 != -1) return bn2;
        return -1;
    }
    if(target == 6)
    {
        int bn6 = bn(a, 6, start, end), bn9 = bn(a, 9, start, end);
        if(bn6 != -1) return bn6;
        if(bn9 != -1) return bn9;
        return -1;
    }
    if(target == 9)
    {
        int bn6 = bn(a, 6, start, end), bn9 = bn(a, 9, start, end);
        if(bn9 != -1) return bn9;
        if(bn6 != -1) return bn6;
        return -1;
    }
    return bn(a, target, start, end);
}

bool found(int a[], int t, int num)
{
    while(num != 0)
    {
        int current = num % 10;
        int in = binary_search(a, current, 0, t);
        if(in == -1) return false;
        a[in] = -1;
        sort(a, a + t);
        num /= 10;
    }
    return true;
}

int main()
{
    int t, avail;
    cin >> t >> avail;
    int temp = avail;
    int len = log10(avail);
    int a[len + 1];
    for(int i = len; i >= 0; i--)
    {
        a[i] = temp % 10;
        temp /= 10;
    }
    sort(a, a + (len + 1));
    int count = 0;
    while(found(a, len + 1, t)) count++;
    cout << count << endl;
    return 0;
}

// Problem : B. Sheldon and Ice Pieces
// Contest : Codeforces - Testing Round #8
// URL : https://codeforces.com/contest/328/problem/B
// Memory Limit : 256 MB
// Time Limit : 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define INF (int)1e9
#define EPS 1e-9
#define PI 3.1415926535897932384626433832795
#define all(a) a.begin(),a.end()
#define x first
#define y second
#define MOD 1000000007
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long long ll;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef double ld;
vll reqArr(10,0),haveArr(10,0);
bool func(ll q){
	for(int i = 0;i<10;i++){
		if(i==6 || i == 9 || i == 2 || i == 5)continue;
		else if(q*reqArr[i] > haveArr[i])return false;
	}
	if(q*(reqArr[2] + reqArr[5]) > (haveArr[2] + haveArr[5]))return false;
	if(q*(reqArr[6] + reqArr[9]) > (haveArr[6] + haveArr[9]))return false;
	return true;
}
int main() {
    // your code goes here
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    string req,found;
    cin >> req >> found;
    for(int i = 0;i<req.size();i++){
    	reqArr[req[i]-'0']++;
    }
    for(int i = 0;i<found.size();i++){
    	haveArr[found[i]-'0']++;
    }
    ll l = 0,r = found.size();
    while(l+1 < r){
        ll mid = (l+r)/2;
        if(func(mid))l = mid;
        else r = mid;
    }
    cout << l << "\n";
    return 0;
}

#include <cstdio>
#include <cstring>
using namespace std;

int t, n, i, T, p[10], ans, k;
char S[1000];

int main() {
	scanf("%d", &t);
	scanf("%s", S);
	n = strlen(S);
	for (i = 0; i < n; i++)
	if (S[i] == '5')	p[2]++;
	else	if (S[i] == '9')	p[6]++;
	else	p[S[i] - '0']++;
	while (true) {
		T = t;
		while (T) {
			if (T % 10 == 5)	k = 5;
			else	if (T % 10 == 9)	k = 6;
			else	k = T % 10;
			if (!p[k]) {
				printf("%d\n", ans);
				return 0;
			}
			p[k]--;
			T /= 10;
		}
		ans++;
	}
}