Phone Code

Polycarpus has n friends in Tarasov city. Polycarpus knows phone numbers of all his friends: they are strings s1,s2,...,sn. All these strings consist only of digits and have the same length.

Once Polycarpus needed to figure out Tarasov city phone code. He assumed that the phone code of the city is the longest common prefix of all phone numbers of his friends. In other words, it is the longest string c which is a prefix (the beginning) of each si for all i(1≤in). Help Polycarpus determine the length of the city phone code.

Input

The first line of the input contains an integer n (2≤n≤3·104) − the number of Polycarpus's friends. The following n lines contain strings s1,s2,...,sn − the phone numbers of Polycarpus's friends. It is guaranteed that all strings consist only of digits and have the same length from 1 to 20, inclusive. It is also guaranteed that all strings are different.

Output

Print the number of digits in the city phone code.

Examples
Input
4
00209
00219
00999
00909
Output
2
Input
2
1
2
Output
0
Input
3
77012345678999999999
77012345678901234567
77012345678998765432
Output
12
Note

prefix of string t is a string that is obtained by deleting zero or more digits from the end of string t. For example, string "00209" has 6 prefixes: "" (an empty prefix), "0", "00", "002", "0020", "00209".

In the first sample the city phone code is string "00".

In the second sample the city phone code is an empty string.

In the third sample the city phone code is string "770123456789".

简单说就是找所有号码中公共的前缀数字的数量,简单来说就是区号吧(手动滑稽)

刚开始想的时候想每个和其他的比,看看最小的公共前缀数字。

然后我就想时间复杂度O(n^2)。时间应该会超吧。所以想相邻的比吧。

还是太菜了。。只能做水题,数据结构的题一看就晕啊。

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
    string a[30004];
    int minlen=1565489;
    int n;
    cin >> n;
    for(int i=0;i<n;i++)
    {
        cin >> a[i];
    }
    int len=a[0].size();
    for(int i=0;i<n-1;i++)
    {
        int Min=0;
        for(int j=0;j<len;j++)
         {
             if(a[i][j]==a[i+1][j])
             Min++;
             else 
             break;
        } 
        //cout << Min << endl;
        minlen=min(Min, minlen);
    }
    cout << minlen;
} 
View Code

猜你喜欢

转载自www.cnblogs.com/jmzIT/p/10200405.html