#include <bits/stdc++.h>
using namespace std;
string s;
long long base=311,MOD=1e9+7,slen;
long long hashs[1005],lt[1005],Pow[1005];
int res1,res2,max1,max2,dau[1005],cuoi[1005],kc[1005],dem;
void nhap()
{
    getline(cin,s);
    s=' '+s;
    slen=s.length()-1;
}
void taohash()
{
    Pow[0]=1;
    for (long long i=1;i<=slen;i++) Pow[i]=(Pow[i-1]*base)%MOD;
    for (long long i=1;i<=slen;i++){
        hashs[i]=(hashs[i-1]*base+s[i])%MOD;
    }
}
long long get(long long i,long long j)
{
    return ((hashs[j]-hashs[i-1]*Pow[j-i+1])+MOD*MOD)%MOD;
}
bool kt(int x,int y)
{
    if (kc[x]!=kc[y]) return false;
    return get(dau[x],cuoi[x])==get(dau[y],cuoi[y]);
}
void push(int u,int v)
{
    dem++;
    dau[dem]=u;
    cuoi[dem]=v;
    kc[dem]=v-u;
}
void khoitao()
{
    int u=1,v;
    for (int i=1;i<=slen;i++){
        if (s[i]==' '||i==slen){
            v=i-1;
            if (i==slen) v=i;
            push(u,v);
            if (kc[dem]>max2){
                res2=dem;
                max2=kc[dem];
            }
            u=i+1;
        }
    }
}
void xuli()
{
    khoitao();
    taohash();
    for (int i=1;i<=dem;i++){
        int kq=0;
        for (int j=1;j<=dem;j++){
            if (j!=i) if (kt(i,j)) kq++;
        }
        if (kq>max1){
            res1=i;
            max1=kq;
        }
    }
    for (int i=dau[res1];i<=cuoi[res1];i++) printf("%c",s[i]);
    printf(" ");
    for (int i=dau[res2];i<=cuoi[res2];i++) printf("%c",s[i]);
    printf("\n");
}
int main()
{
    nhap();
    xuli();
}

