title: memory error in python
body: <pre><code>Traceback (most recent call last):
  File "/run-1341144766-1067082874/solution.py", line 27, in 
  main()
  File "/run-1341144766-1067082874/solution.py", line 11, in main
  if len(s[i:j+1]) &gt; 0:
  MemoryError
  Error in sys.excepthook:
  Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
  from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python2.7/dist-packages/apport/__init__.py", line 1, in 
  from apport.report import Report
  MemoryError
  
  Original exception was:
  Traceback (most recent call last):
  File "/run-1341144766-1067082874/solution.py", line 27, in 
  main()
  File "/run-1341144766-1067082874/solution.py", line 11, in main
  if len(s[i:j+1]) &gt; 0:
  MemoryError
  </code></pre>
  
  <p>The above errors appeared when I tried to run the following program. Can someone explain what is a memory error, and how to overcome this problem? . <strong>The program takes strings as input and finds all possible sub strings and creates a set(in a lexicographical order) out of it and it should print the value at the respective index asked by the user otherwise it should print 'Invalid'</strong></p>
  
  <pre><code>def main():
      no_str = int(raw_input())
      sub_strings= []
      for k in xrange(0,no_str):
          s = raw_input()
          a=len(s)
          for i in xrange(0, a):
              for j in xrange(0, a):
                  if j &gt;= i:
                      if len(s[i:j+1]) &gt; 0:
                          sub_strings.append(s[i:j+1])
      sub_strings = list(set(sub_strings))
      sub_strings.sort()
      queries= int(raw_input())
      resul = []
      for i in xrange(0,queries):
          resul.append(int(raw_input()))
      for p in resul:
          try:
              print sub_strings[p-1]
          except IndexError:
              print 'INVALID'
  
  
  if __name__ == "__main__":
     main()
  </code></pre>