#include <cstdio>
#include <cstring>
/*
struct cvor
{
    cvor * sin[26];
    int optdub;
    bool krajr;
    cvor()
    {
        for ( int i=0;i<26;i++)
            sin[i]=0;
        krajr=false;
    }
};
void insert(cvor * t,int index,int len);

char rec[53];
cvor root;
int n;
void dfs(cvor *t,bool napot,int nmb)
{
    if ( t==0 ) return;
    if (t->krajr )
        {
            t->optdub=0;
            return;
        }
    for ( int i=0;i<26;i++)
            dfs(t->sin[i],!napot,nmb);


    int m;
    if ( (napot&& nmb==1) || (!napot && nmb==2) )
    {
        m=99999999;
        for ( int i=0;i<26;i++)
        {
            if ( t->sin[i]!=0 && t->sin[i]->optdub%2==1 && t->sin[i]->optdub<m )
                m= t->sin[i]->optdub;
        }
        if (m==99999999 )
        {
            for ( int i=0;i<26;i++)
            {
                if ( t->sin[i]!=0 && t->sin[i]->optdub<m )
                    m= t->sin[i]->optdub;
            }
        }
    }
    else
    {
        m=-1;
        for ( int i=0;i<26;i++)
        {
            if ( t->sin[i]!=0 && t->sin[i]->optdub%2==1 && t->sin[i]->optdub>m )
                m= t->sin[i]->optdub;
        }
        if (m==-1 )
        {
            for ( int i=0;i<26;i++)
            {
                if ( t->sin[i]!=0 && t->sin[i]->optdub>m )
                    m= t->sin[i]->optdub;
            }
        }
    }
    t->optdub=m+1;
}

void rek(cvor *t,bool napot,int nmb)
{
    if (t->krajr )
        {
            t->optdub=0;
            return;
        }
    int m;
    int index;
    if ( (napot&& nmb==1) || (!napot && nmb==2) )
    {
        m=99999999;
        for ( int i=0;i<26;i++)
        {
            if ( t->sin[i]!=0 && t->sin[i]->optdub%2==1 && t->sin[i]->optdub<m )
                { m= t->sin[i]->optdub;index=i;}
        }
        if (m==99999999 )
        {
            for ( int i=0;i<26;i++)
            {
                if ( t->sin[i]!=0 && t->sin[i]->optdub<m )
                    {m= t->sin[i]->optdub;index=i;}
            }
        }
    }
    else
    {
        m=-1;
        for ( int i=0;i<26;i++)
        {
            if ( t->sin[i]!=0 && t->sin[i]->optdub%2==1 && t->sin[i]->optdub>m )
               { m= t->sin[i]->optdub;index=i;}
        }
        if (m==-1 )
        {
            for ( int i=0;i<26;i++)
            {
                if ( t->sin[i]!=0 && t->sin[i]->optdub>m )
                    {m= t->sin[i]->optdub;index=i;}
            }
        }
    }
    printf("%c",index+'a');
    rek(t->sin[index],!napot,nmb);
}
*/
int main()
{
    int n;
    scanf("%d",&n);
  /*  for ( int i=0;i<n;i++)
    {
        scanf("%s",rec);
        insert(&root,0,strlen(rec));
    }
    */
    /*dfs(&root,true,1) ;

    bool flag=false;
    for ( int i=0;i<26;i++)
    {
        if( root.sin[i]!=0 && root.sin[i]->optdub%2==1 )
            {flag=true;break;}
    }
    if ( flag)
    {
        printf("1\n");
        rek(&root,true,1);

    }
    else
    {
        dfs(&root,true,2);
        printf("2\n");
        rek(&root,true,2);
    }
*/
    return 0;
}
/*
void insert(cvor * t, int index,int len)
{
    if (index==len)
    {
        t->krajr=true;
        return ;
    }
    if (t->sin[rec[index]-'a']==0 )
    {
        t->sin[rec[index]-'a']=new cvor;
    }
    insert(t->sin[rec[index]-'a'],index+1,len);
}
*/
