fork(2) download
  1. #include <map>
  2. #include <set>
  3. #include <list>
  4. #include <cmath>
  5. #include <ctime>
  6. #include <deque>
  7. #include <queue>
  8. #include <stack>
  9. #include <string>
  10. #include <bitset>
  11. #include <cstdio>
  12. #include <limits>
  13. #include <vector>
  14. #include <climits>
  15. #include <cstring>
  16. #include <cstdlib>
  17. #include <fstream>
  18. #include <numeric>
  19. #include <sstream>
  20. #include <iostream>
  21. #include <algorithm>
  22. #include <unordered_map>
  23.  
  24. using namespace std;
  25. int main() {
  26. int n;
  27. cin >> n;
  28. string s;
  29. cin >> s;
  30. vector<int> count(10, 0);
  31. for(char c: s){
  32. count[c-'0']++;
  33. }
  34. string f = "";
  35. int rem = 0;
  36. unordered_map <char, int> mp;
  37. for(int i=0; i<10; i++){
  38. // cout<<count[i]<<" ";
  39. if(count[i] & 1){
  40. char cur = i + '0';
  41. mp[cur] = 1;
  42. f += cur;
  43. rem++;
  44. }
  45. }
  46.  
  47. if(f.size() == 0) cout << -1 <<endl;
  48. else {
  49. // cout<<f<<endl;
  50. int i = 0;
  51. int j = 0;
  52. int st = -1;
  53. int en = -1;
  54. int ans_len = INT_MAX;
  55. while(i < s.size() && j < s.size()){
  56. if(mp[s[j]] == 1) rem--;
  57. mp[s[j]]--;
  58. j++;
  59. while(rem == 0){
  60. if(j - i < ans_len) ans_len = j - i;
  61. if(mp[s[i]] == 0) rem++;
  62. mp[s[i]]++;
  63. i++;
  64. }
  65. }
  66.  
  67. cout<<ans_len - 1<<endl;
  68. }
  69. return 0;
  70. }
Success #stdin #stdout 0s 4536KB
stdin
4
2113
stdout
3