#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<queue>
#include<list>
#include<stack>
#include<cstdio>
#include<fstream>
#include<numeric>
#include<functional>
#include<utility>
#include<memory>
using namespace std;
using namespace placeholders;
bool used(int length, string s, int k){
int count_sub = 0;
for (int i = 0; i < s.size();){
int amount = 0;
bool flag = false;
int index, j;
for (j = i; j < s.size() && amount < length; j++){
if (s[j] == ' ' || s[j] == '-'){
flag = true;
index = j;
}
amount++;
}
if (flag){
count_sub++;
if (j == s.size()) i = j;
else i = index + 1;
}
else{
if (j == s.size()){
i = j;
count_sub++;
}
else{
return false;
}
}
}
if (count_sub > k) return false;
else return true;
}
int main(){
int k;
while (cin >> k){
getchar();
string s;
getline(cin, s);
int start = 0;
int end = s.size();
while (start <= end){
int mid = (start + end) / 2;
if (!used(mid, s, k)){
start = mid + 1;
}
else{
end = mid - 1;
}
}
cout << start << endl;
}
return 0;
}