#include<cstdio>
#include<cstring>
using namespace std;
//char *s1 = &str[i][ans];表示取第i行 从ans位置开始的字符串
//想到的唯一难点就是如何把截取的字符串去除,开始想了substr,但太麻烦了
//慢慢来呗,对指针还是不熟悉呀。
int main()
{
    int n;
    while(scanf("%d",&n),n)
    {
        char str[105][105];
        char *s1,*s2;
        for(int i = 0; i<n; ++i)
            scanf("%s",str[i]);
        int ans;
        bool f = true;
        for(ans = 0 ; f ; ++ans)
        {
            for(int i = 0; i<n; ++i)
            {
                if(str[i][ans]=='\0'||!f)
                {
                    f = false;
                    break;
                }
                for(int j = i+1; j<n; ++j)
                {
                    s1 = &str[i][ans];
                    s2 = &str[j][ans];
                    if(strcmp(s1,s2)==0)
                    {
                        f = false;
                        break;
                    }
                }
            }
        }
        printf("%d\n",ans-2);
    }
    return 0;
}