博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
D - Mike and strings
阅读量:5243 次
发布时间:2019-06-14

本文共 1608 字,大约阅读时间需要 5 分钟。

D - Mike and strings

Mike has n strings s1, s2, ..., sn each consisting of lowercase English letters. In one move he can choose a string si, erase the first character and append it to the end of the string. For example, if he has the string "coolmike", in one move he can transform it into the string "oolmikec".

Now Mike asks himself: what is minimal number of moves that he needs to do in order to make all the strings equal?

Input

The first line contains integer n (1 ≤ n ≤ 50) — the number of strings.

This is followed by n lines which contain a string each. The i-th line corresponding to string si. Lengths of strings are equal. Lengths of each string is positive and don't exceed 50.

Output

Print the minimal number of moves Mike needs in order to make all the strings equal or print  - 1 if there is no solution.

Example

Input
4 xzzwo zwoxz zzwox xzzwo
Output
5
Input
2 molzv lzvmo
Output
2
Input
3 kc kc kc
Output
0
Input
3 aa aa ab
Output
-1 题意:输入一个整数n,然后输入n个长度相同的字符串,如果能通过循环位移使这n个字符串都相等,输出最小的操作次数,如果不能,输出-1; 题解:1.首先判断能不能通过循环位移使这n个字符串都相等     2.计算把第第1,2。。。n行字符串当模板使所有字符串都相等的操作次数     3.输出最小的值。 代码:
#include
#include
#include
#include
#include
using namespace std;int main(){ string str[55]; int i,j,n,ans[55],k,book=0; int x[55],b; cin>>n;string T,W; memset(x,0,sizeof(x)); memset(ans,0,sizeof(ans)); for(i=1;i<=n;i++) { cin>>str[i]; } for(i=0;i

 

 

转载于:https://www.cnblogs.com/GXXX/p/6814550.html

你可能感兴趣的文章
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
Java内部类详解
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
图论-次短路求法
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>
JSON跨域解决方案收集
查看>>
SSH框架整合总结
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
md5sum命令详解
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>